我正在搞NHibernate Search和Lucene來創建一個可搜索的法律實體索引。我的域模型看起來有點像這樣:如何使用NHibernate Search/Lucene構建域模型
[Indexed]
public abstract class LegalEntity : AggregateRoot
{
public virtual Address Address { get; set; }
}
public class Person : LegalEntity
{
public virtual string FirstNames { get; set; }
public virtual string LastName { get; set; }
}
public class Company: LegalEntity
{
public virtual string Name { get; set; }
}
public class Address : Component
{
public virtual string Street { get; set; }
public virtual string HouseNumber { get; set; }
// etc...
}
作爲子類化意味着,LegalEntity
是專門爲Person
和Company
的NHibernate的實體,並且Address
是NHibernate的組成部分。
現在,我將如何最好地創建一個類似Google的模糊搜索,其中包含LegalEntity
的所有字段,包括Address
組件中的所有字段?
我的第一個想法是實施AddressFieldBridge
在將在Address
組件領域幫助,然後就扔在[Field]
上的所有領域,但我無法找到一個方法來構建一個FuzzyQuery
爲連詞在多個搜索詞之間。
我的下一個想法是在LegalEntity
創建標記[Field]
抽象屬性,像這樣:
[Field(Index.Tokenized)]
public abstract string SearchableText { get; }
,然後有Person
和Company
迴文本相結合的名字和所有字段從Address
組件爲一體字符串,然後由Lucene進行標記和索引。
然而,這讓我感覺很噁心。
我想最好的學習和侵入性最小(從域模型的角度)的方式來完成這個任務 - 任何建議表示讚賞:)