2010-02-19 2 views
0

Использование Nhibernate.Поиск в настоящий момент.Lucene «присоединиться» кстати?

Некоторый код для связи:

[Indexed] 
class foo { 
    [DocumentId] 
    int id {get;set;} 
    bar bar {get;set;} 
} 

[Indexed] 
class bar { 
    [DocumentId] 
    int id {get;set;} 
} 

Вопрос:
Как получить все FOOS где foo.bar.id == 1 с использованием IFullTextQuery?

ответ

1

Если вы хотите включить информацию, связанную в индекс Foo вы можете посмотреть в IndexedEmbeddedAttribute. Это позволит вам запрашивать отношения, например, если на баровом объекте было свойство Name, вы могли бы создать такой запрос, как этот

IFullTextQuery query = search.CreateFullTextQuery("bar.Name:Arnis"); 
query.List<foo>(); 
+0

, вы должны быть осторожны при использовании IndexedEmbeddedAttribute, потому что требуется больше объектов для загрузки во время индексирования. –

+0

Что делать, если мне нужно добавить этот раздел в запрос, сделанный с помощью MultiFieldQueryParser? –

+0

В конструкторе MutliFieldQueryParser он позволяет передавать строковый массив полей, которые вы хотите найти. Просто перейдите в поле «bar.Name» в качестве одного из полей. –