如何配置Solr搜索以获得最佳匹配?

时间:2012-03-21 21:10:13

标签: solr

如何根据最佳匹配而不是过滤来搜索没有一个字词的数据库行?我可以使用通用的标记器或过滤器吗?

例如,如果我的搜索条件是: greek american

然后结果集应包含greek OR american的所有字符串 如果数据库具有以下行:

german food
americans in paris
greek americans
thai food
greek food

然后它应该返回顶部的最佳匹配,即使它可能没有全部/部分搜索词:

greek americans
greek food
americans in paris

2 个答案:

答案 0 :(得分:1)

这是Solr默认执行的操作。也许得分手不符合您的期望,您应该打开debugQuery以更好地理解分数的计算方式。

根据您的示例,您应该确保分析仪执行词干分析,以便以相同的方式分析americanamericans

当开始使用使用TF-IDF进行评分的工具时,可能令人困惑的一件事是它给予稀有术语更多机会进行排名。例如,如果american在您的索引中比greek更常见,则greek restaurant的查询可能会使希腊博物馆的排名高于美国餐馆。

您可以自行编写Similarity来自定义分数的计算方法。

答案 1 :(得分:0)

听起来我的默认操作符是“AND”。以下内容应该在schema.xml文件中的某个位置:

<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
<solrQueryParser defaultOperator="AND"/>

如果您希望默认情况下为“或”,请使用<solrQueryParser defaultOperator="OR"/>。否则,在查询中使用显式OR:

?q=(greek OR american)

如果您发布schema.xml文件的相关部分,也许我可以帮助解决更多问题。