如何在Solr中编写条件查询?

时间:2016-03-22 13:53:40

标签: php search solr lucene

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

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

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

现在,如果有人按关键字“罗马尼亚”搜索,则结果应基于以下条件: -

  1. 如果关键字与name列匹配,则在名称列中搜索,然后返回数据,不再搜索任何其他列。
  2. 如果name列没有该关键字,那么它将转到地址列,如果找到结果则类似于第一步,然后返回数据,否则它将转到下一列。
  3. 这是一种优先搜索,其中预定义了要在搜索中使用的列的修道院。如果sonr提供任何这样的功能,我想使用它而不是编写任何模糊逻辑。

    由于

2 个答案:

答案 0 :(得分:1)

这将是搜索您正在谈论的所有列。使用val apps = Map(a -> "1", b -> "1", c -> "1", d -> "1") 告诉Solr您要查询的字段(使用edismax查询类型时):

qf

您还可以给出权重,以便名称列中的匹配显示高于地址列中的匹配,而后者的显示高于城市列中的匹配:

qf=name address city

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

答案 1 :(得分:0)

你可以使用fq来搜索它:

fq=name:romania 

或在q

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

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