【问题标题】:How to write conditional query in Solr?如何在 Solr 中编写条件查询?
【发布时间】:2016-07-09 10:52:23
【问题描述】:

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

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

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

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

  1. 如果关键字与名称列匹配,则在名称列中搜索,然后返回数据,不再搜索任何其他列。
  2. 如果名称列没有该关键字,则进入地址列,如果找到结果则返回数据,否则将进入下一列。

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

谢谢

【问题讨论】:

    标签: php search solr lucene


    【解决方案1】:

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

    qf=name address city
    

    您还可以赋予权重,以便名称列中的匹配显示高于地址列中的匹配,而地址列中的匹配又将显示高于城市列中的匹配:

    qf=name^20 address^10 city
    

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

    【讨论】:

      【解决方案2】:

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

      fq=name:romania 
      

      或在q中

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-02
        • 2019-07-17
        • 2021-06-21
        • 1970-01-01
        相关资源
        最近更新 更多