例如。我将这些行存储在我的Solr中。
{city: "Boston", country: "USA"},
{city: "Miami", country: "USA"},
{city: "Orlando", country: "USA"}
我会搜索“Boston USA”。在这种情况下,我想返回一个结果,因为我的搜索匹配所有单词。这是“与”行为或类似“mm”的参数,具有100%的价值。
但如果我搜索“德克萨斯美国”,我想返回三个结果,因为它无法匹配所有单词,但它至少找到一个单词。现在,我认为这是“OR”行为或类似“mm”参数的0值。
简而言之,我想要匹配所有单词。如果没有任何结果,它应该尝试匹配至少一个单词。 在唯一查询中是否可以有两种不同的行为?
ps:我正在使用eDismax解析器。
答案 0 :(得分:2)
这样做的一种方法是编写自己的SearchComponent并在那里实现该逻辑。首先运行一个带有mm = 100%的edismax请求,如果得到结果,则返回它们,如果没有则再运行mm = 0%等(你甚至可以用更多的步骤,50%......)。
或者您也可以使用mm = 0%始终运行但是查看得分/匹配并且仅在客户端保留最佳结果。您可以使用突出显示来查看匹配的单词。