當我使用Lucene索引我的實體時,我習慣於將所有索引屬性放在名爲「all」的字段中,以執行「所有「我的實體類型。(N)Hibernate.Search:索引一個字段中的不同屬性
現在,使用NHibernate.Search,我找不到如何做到這一點。我嘗試這樣做:
[Indexed(Index = "MyIndex")]
public class Post
{
[DocumentId]
public virtual int Id { get; set; }
[IndexedEmbedded]
public virtual Author Author { get; set; }
[IndexedEmbedded]
public virtual IEnumerable<Category> Categories { get; set; }
[Field(Index.Tokenized, Store = Store.Yes)]
[Field(Name = "All", Index = Index.Tokenized, Store = Store.Yes)]
public virtual string Name { get; set; }
[Field(Name = "All", Index = Index.Tokenized, Store = Store.Yes)]
[Field(Index.Tokenized, Store = Store.Yes)]
public virtual string Body { get; set; }
}
但是我有一個拋出的異常:「鍵已經存在於詞典」,在ScopedAnalyzer.cs 26行:
scopedAnalyzers.Add(scope, analyzer);
其中「範圍」是索引的名字字段(這裏是「全部」)。如果我把支票像
if(!scopedAnalyzers.ContainsKey(scope))
它會工作得很好:我將有2場對每個「郵報」的文件,一個用身體,一個名爲。 但是,我不是很容易修改NHibernate.Search源代碼。
任何人都有關於如何索引不同屬性在一個領域的建議?
也標記爲hibernate.search,因爲API(非常)相同... – mathieu 2009-10-10 20:11:13