首先使用AND运算符进行Solr排序搜索,然后使用OR运算符生成结果

时间:2016-08-24 00:54:57

标签: search solr operators

让我们说我有一句话:

  

Cyclone Winston Fiji救济呼吁

首先我要显示结果中的所有单词,所以基本上是一个AND搜索,然后显示所有至少有一个单词的结果,所以进行OR搜索。

是否可能,以及如何做到这一点?

首先,我会看到如下结果:

  

Cyclone Winston Fiji救济上诉
  呼吁飓风温斯顿斐济救济
  上诉斐济救济旋风温斯顿
  ......

然后结果如:

  

CYCLON
  Widston
  上诉
  斐济
  ...

2 个答案:

答案 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)。