2009-10-10 66 views
3

當我使用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源代碼。

任何人都有關於如何索引不同屬性在一個領域的建議?

+0

也標記爲hibernate.search,因爲API(非常)相同... – mathieu 2009-10-10 20:11:13

回答

相關問題