2012-05-23 37 views
1

我有內容的synonyms.txt文件,如下多字同義詞使用Solr和Hibernate Search的

car accessories, gadi marmat 

,我索引汽車配件作爲一個單一的令牌,以便將擴大到汽車配件gadi marmat

我希望整個同義詞相匹配,這樣,當查詢加迪marmat,要返回與汽車配件記錄。

我使用的木瓦濾清器廠擴大查詢,以便爲加迪marmat,這將擴大到加迪加迪marmatmarmat搜索時,由於加迪marmat查詢作爲一個單一的令牌,它應該匹配汽車配件和返回的結果,但事實並非如此,但當我搜索汽車配件,它是返回結果。因此,必須對帶有多個詞的同義詞進行索引。

請建議。

+0

注:擴展設置爲true。 – zdesam

+0

您是否嘗試過使用'/ admin/analysis.jsp'來查看令牌擴展是否按照您的預期運行? – beerbajay

回答

3

同義詞文件僅用於更改正在搜索的單詞。 所以,如果你寫

汽車配件=>加迪marmat

當「汽車配件」編譯器匹配,它試圖在「加迪marmat」

它就像一個單一的令牌

匹配

你可以得到很好的效果混合元素分析儀這樣的

@AnalyzerDef(name = "integram", 
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), 
filters = { 
    @TokenFilterDef(factory = LowerCaseFilterFactory.class), 
    @TokenFilterDef(factory = StopFilterFactory.class, params = { 
     @Parameter(name = "words", value = "lucene/dictionary/stopwords.txt"), 
     @Parameter(name = "ignoreCase", value = "true"), 
     @Parameter(name = "enablePositionIncrements", value = "true") 
    }), 
    @TokenFilterDef(factory = SnowballPorterFilterFactory.class, params = { 
      @Parameter(name = "language", value = "English") 
    }), 
    @TokenFilterDef(factory = SynonymFilterFactory.class, params = { 
     @Parameter(name = "synonyms", value = "lucene/dictionary/synonyms.txt"), 
     @Parameter(name = "expand", value = "false") 
    }), 
    @TokenFilterDef(factory = SnowballPorterFilterFactory.class, params = { 
      @Parameter(name = "language", value = "English") 
    }) 
}) 
+0

org.hibernate.search.exception.SearchException:HSEARCH000114:無法加載資源:'lucene/dictionary/synonyms .txt'。我無法加載同義詞或停用詞。這些文件是我需要下載的嗎?我認爲他們會在Maven中提供這個功能。 – jDub9