如何在 Solr 中编写条件查询


How to write conditional query in Solr?

我是sonr的新手,我必须编写一个条件查询。我只是想知道我可以编写具有多个条件的查询吗?

我有四列,查询条件如下:-

列:姓名、地址、城市、州

现在,如果有人通过关键字"罗马尼亚"进行搜索,那么结果应基于以下条件:-

  1. 如果关键字与名称列匹配,则在名称列中搜索,则返回数据,不要再进行任何列。
  2. 如果 name 列没有该关键字,那么它将转到地址列,如果找到结果,则返回数据,则类似于第一步,否则它将转到下一列。

它是一种优先级搜索,其中预定义了要在搜索中使用的列的先验。如果sonr提供任何这样的功能,我想使用它而不是编写任何模糊逻辑。

谢谢

这将是搜索您正在谈论的所有列。使用 qf 告诉 Solr 您要查询哪些字段(使用 edismax 查询类型时):

qf=name address city
您还可以给出权重,以便名称列中的匹配显示高于地址列中的匹配,而地址列中的

匹配又会高于城市列中的匹配:

qf=name^20 address^10 city

您可能需要调整权重才能获得所需的搜索结果。

您可以使用 fq 像这样搜索它:

fq=name:romania 

或在 Q 中

+name:"romania" or +address:"romania" or +city:"romania" or +state:"romania"

使用 OR 就像在编程中一样,如果第一个查询为 false,则移动到下一个查询和下一个查询。