1

我有一个 synonyms.txt 文件,内容如下

car accessories, gadi marmat

我将汽车配件作为一个单一的标记进行索引,以便将其扩展到汽车配件gadi marmat

我希望整个同义词匹配,以便在查询gadi marmat时,返回带有汽车配件的记录。

我正在使用 shingle filter factory 扩展查询,这样在搜索gadi marmat时,它将扩展为gadigadi marmatmarmat,并且由于gadi marmat是作为单个令牌查询的,它应该匹配汽车配件并返回结果但是不是这样,但是当我搜索汽车配件时,它正在返回结果。因此,prblm 必须使用具有多个单词的索引同义词。

请建议。

4

1 回答 1

3

同义词文件仅用于更改您正在搜索的单词。所以如果你写

汽车配件 => gadi marmat

当编译器匹配“汽车配件”时,它会尝试匹配“gadi 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")
     })
})
于 2012-10-12T09:08:42.993 回答