Solr中的单词搜索不准确

Solr中的单词搜索不准确,solr,Solr,我正在开发一个在电子商务网站上搜索产品的应用程序。我们在Solr index中输入了大约500万种产品,包括所有常规字段:标题、描述等,而多词搜索短语非常有效,例如凉鞋或高尔夫球衣。单词搜索不是很好 例如,当我搜索吉他时,Solr返回一堆提到吉他的产品。然而,不知何故,吉他音乐CD、如何弹奏吉他的指南和吉他形状的钥匙链的排名高于实际吉他。第一把真正的吉他出现在120位左右。 从用户的角度来看,我在想,如果我进入古塔,我是在寻找真正的吉他。如果我需要如何弹吉他的指南,我会搜索吉他演奏指南,顺便说一

我正在开发一个在电子商务网站上搜索产品的应用程序。我们在Solr index中输入了大约500万种产品,包括所有常规字段:标题、描述等,而多词搜索短语非常有效,例如凉鞋或高尔夫球衣。单词搜索不是很好

例如,当我搜索吉他时,Solr返回一堆提到吉他的产品。然而,不知何故,吉他音乐CD、如何弹奏吉他的指南和吉他形状的钥匙链的排名高于实际吉他。第一把真正的吉他出现在120位左右。 从用户的角度来看,我在想,如果我进入古塔,我是在寻找真正的吉他。如果我需要如何弹吉他的指南,我会搜索吉他演奏指南,顺便说一句,它非常有效

同样的问题,如果你搜索鞋子。它带回了一堆音乐CD。显然,有很多这样的人在标题或描述中都有“鞋”这个词

我观察到的一点是,搜索结果中这些不相关的产品都有很短的标题和描述。我想这会提高每个单词的意义。如果你有一张音乐CD《法式鞋》的片名,而没有其他什么可供参考的,Solr是上当受骗的。所以我在想,有没有一种方法可以为文本较长的文档分配更高的级别?我将不得不使用字段长度的概念,不确定它在Solr中是否是一个简单的调整


还有其他建议吗?

你的观察是正确的。在Solr评分中,有一种叫做长度标准化的方法。在其他条件相同的情况下,短场比赛的权重大于长场比赛的权重。要禁用字段的长度规范化,请在solrconfig.xml中的字段定义中将ommitNormals设置为true,如下所示:

<field name="text" type="text_general" indexed="true" stored="true" omitNorms="true" />
有几种方法可以解决您遇到的问题。其中之一是用于确保您选择的特定文档显示在给定查询字符串(如吉他)的结果顶部。如果您有一小部分静态文档需要提升,例如,如果您只有几把吉他,在搜索吉他时,您总是希望在搜索结果的顶部显示这些吉他,则此项功能可以正常工作

另一种方法是创建一个类别字段,该字段具有诸如吉他、吉他演奏指南等值。使用,包括类别以及qf参数中的其他字段标题、说明等,即要搜索的字段,并大幅提升类别字段。由于guitar比guitar play guide短,因此默认情况下会受益于长度规范化,并且由于category字段的大量增加,因此查询字符串guitar应该为guitar类别中的文档提供比guitar play guide类别中的文档更高的分数

更好的是,询问用户他们是否真的在寻找吉他或吉他演奏指南。您可以在搜索结果中显示类别,并允许用户按类别细化搜索。或者,如果你的网站有自动建议功能,你也可以问这个问题,哪一个更好。例如,在Amazon.com上,如果您键入吉他,它会猜测您可能正在寻找乐器、应用程序、玩具、书籍等,并允许您从中进行选择