让我们说我有一句话:
Cyclone Winston Fiji救济呼吁
首先我要显示结果中的所有单词,所以基本上是一个AND搜索,然后显示所有至少有一个单词的结果,所以进行OR搜索。
是否可能,以及如何做到这一点?
首先,我会看到如下结果:
Cyclone Winston Fiji救济上诉
呼吁飓风温斯顿斐济救济
上诉斐济救济旋风温斯顿
......
然后结果如:
CYCLON
Widston
上诉
斐济
...
答案 0 :(得分:2)
Solr(实际上是Lucene)没有AND和OR命令 - 它们实际上是每个术语必须,应该和不是。而你所说的应该与标准的SHOULD用例相匹配,这就是当你不做任何特别的事情时会发生的事情。大多数术语匹配,它越相关。
所以,如果你没有得到它,那么别的东西就是问题。您可以启用调试以查看实际发生的情况(尽管理解输出需要时间)。一种情况是您正在使用eDisMax并使用来自不同来源的匹配来搜索多个字段。然后,仅使用最佳字段匹配,并且其他匹配被遮蔽。使用 tie 参数可以提供帮助。
答案 1 :(得分:0)
如果您对当前的相关性机制不满意,可以通过近距离提高内容。 使用eDismax,您正在寻找 pf 和 ps 参数,如this wiki中所述。 例如,如果您要查询名为 text 的字段,则查询将如下所示:
select JSON_UNQUOTE(JSON_EXTRACT(config_settings,"$.description")) as description FROM example.
短语查询将被提升3(请选择适合您需要的重量),10是slop(此处也选择您的slop)。