1

例如。我将这些行存储在我的 Solr 中。

{city: "Boston", country: "USA"}, 
{city: "Miami", country: "USA"}, 
{city: "Orlando", country: "USA"}

我将通过“波士顿美国”进行搜索。在这种情况下,我想返回一个结果,因为我的搜索匹配所有单词。那是“AND”行为或类似“mm”参数的 100% 值。

但是如果我搜索“Texas USA”,我想返回三个结果,因为它无法匹配所有单词,但它至少找到了一个单词。现在,我认为这是“OR”行为或类似“mm”参数的值为 0。

简而言之,我想匹配所有单词。如果没有任何结果,它应该尝试匹配至少一个单词。唯一查询中是否可以有两种不同的行为?

ps:我正在使用 eDismax 解析器。

4

1 回答 1

2

一种方法是编写自己的SearchComponent并在那里实现该逻辑。首先以 mm=100% 运行 edismax 请求,如果您得到结果,则返回它们,如果没有则以 mm=0% 等运行它(您甚至可以在更多步骤中执行,50%...)。

或者您也可以始终使用 mm=0% 运行,但查看分数/匹配项并仅在客户端保留最佳结果。您可以使用突出显示来查看匹配的单词。

于 2014-01-26T20:03:50.240 回答