刚开始学习Solr的工作项目,并想知道如何处理这个问题。我们的应用程序允许用户根据商家名称进行搜索。公司名称由3个不同的类别(英语,法语和组合名称)组成。根据用户输入的单个查询,如何使用Solr提供最相关的搜索结果?我已经研究过模糊和近距离搜索,这些搜索似乎足够合理。虽然模糊搜索仅适用于单个术语,但这使我相信我需要将查询拆分为单个术语并对每个术语应用模糊搜索并合并结果(如果我要使用它)?我的问题是如何最好地解决问题?谢谢!
答案 0 :(得分:0)
为了提供与文档的相关性,您需要将适当的提升查询和优先级组合在一起,因为相关性对您的用例意味着什么。如果在用例中包含基于正则表达式的搜索,您可以选择NGrams,如果您正在寻找精确搜索,则提升非常重要。您可以使用词组斜率,mm和其他edismax参数等参数。您可以使用标题和文本内容搜索的组合,以及良好的提升组合。此外,Solr允许您在括号中传递查询,其功能类似于SQL IN查询,通过坚持查询中仅提及的关键字,进一步提高了文档的相关性。最后,如果所有这些都不够,您可以使用自定义函数查询来满足您的需求。在完成所有这些操作时,请记住schema.xml文件中的分析器是正确的,并且用于执行上述查询。
答案 1 :(得分:0)
你可以在这个兔子洞里走得很远,因为你有时间搜索商业名称。 (模糊,类似声音,特定于语言的分析,用作域名的奇怪的复合术语(例如:使“EZBake”匹配“轻松烘焙”,或“1对1”以匹配“一对一”)是非平凡的)
由于这听起来像是一个预先存在的应用程序,我通常会查询日志(如果可用)来抽样不同类型的不匹配的频率(挖出零结果搜索术语并开始手动分类高级别问题背后更常见的不匹配)。
这将为您提供积压的“匹配用例以研究如何实施”(按照样本确定的最大利益顺序)。
然后你就可以开始烧掉它们了,并且询问更多关于如何让Solr跳过你的特定领域的箍的具体问题。