它适用于包含“ – ”但不是所有的一些单词,我没有找到原因,为什么它不工作.
我正在搜索的字段被分析,并且包含具有和不具有“ – ”字符的单词的版本.
我正在使用分析器:org.apache.lucene.analysis.standard.StandardAnalyzer
这里有一个例子:
如果我搜索“gsx- *”,我得到一个结果,索引的字段包含
“SUZUKI GSX-R 1000 GSX-R1000 GSXR”
但如果我搜索“v- *”,我没有结果.预期结果的索引字段包含:
“SUZUKI DL 1000 V-STROM DL1000V-STROMVSTROM V STROM”
如果我搜索“v-strom”而没有“*”它可以工作,但如果我只是搜索“v-str”,例如我没有得到结果. (应该是一个结果,因为它是一个网上商店的实时搜索)
那么2个预期结果有什么区别?为什么它适用于“gsx”,但不适用于“v-”?
解决方法
所以你想要的是“v-strom”作为一个整体来成为一个索引的术语. StandardAnalyzer不适合这种文本.也许可以与WhitespaceAnalyzer或SimpleAnalyzer一起去.如果仍然没有削减它,您也可以选择将自己的分析仪扔在一起,也可以选择将其分开,然后再进一步使用TokenFilters进行组合. the Lucene Analysis package Javadoc.提供了非常好的解释
BTW,没有必要输入索引中的所有变体,如V-strom,V-Strom等.这个想法是使同一个分析器将所有这些变体标准化为索引中的同一个字符串,同时解析查询.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。