我有一个peers.txt文件,内容如下
car accessories, gadi marmat
我正在将汽车配件编入索引,以便将其扩展为汽车配件和 gadi marmat 。
我希望整个同义词匹配,以便在查询 gadi marmat 时,返回汽车配件的记录。
我正在使用shingle filter factory来扩展查询,以便在搜索 gadi marmat 时,它会扩展为 gadi , gadi marmat 和 marmat ,并且由于 gadi marmat 被查询为单个令牌,它应该匹配汽车配件并返回结果,但事实并非如此,但是当我搜索汽车配件时,它返回结果。因此必须使用具有多个单词的索引同义词的prblm。
请建议。
答案 0 :(得分: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")
})
})