我正在寻找一种限制SOLR中“关键字填充”效果(或消除它)的方法。 (我们目前正在运行SOLR 6.2.0服务器)。 我已经尝试过设置omitTermFreqAndPositions =“true”,但是当我这样做时,一些查询会引发短语查询错误(特别是使用搜索词如G1966B进行查询 - 可能是由于单词拆分等)。我可以走下去禁用单词分裂的道路,并试图避免短语查询错误,但这只是搞砸了比我想要解决的更多的东西。
有人对如何限制单个字段中多个关键字匹配的影响有任何建议吗?
示例:如果我们有一个类似这样的描述字段:
BrandX 1200系列G1924B LC / MSD SL XBC系统。 此BrandX 1200系列G1924B(G 1924 B,G1924 B,G 1924B)LC / MSD SL XBC>系统状况良好。
当有人搜索“G1924B”时,我想避免将此文档评分更高,因为它恰好有几次G1924B(或其变体)。 理论上,有人可以在他们的描述中多次重复关键字,试图欺骗系统将搜索结果排在更高的位置。
有什么建议吗?
谢谢!
答案 0 :(得分:0)
这似乎比最初想象的更频繁。 如果删除术语频率和位置,则会丢失短语搜索功能。
我建议写一个忽略TF(Term Frequency)的自定义相似度。 目前,默认BM25考虑了TF。 您可以选择该类并调整相似度微积分,将TF视为常数。
e.g。
org.apache.lucene.search.similarities.BM25Similarity.BM25DocScorer#得分
[1] org.apache.lucene.search.similarities.BM25Similarity