【问题标题】:How to write conditional query in Solr?如何在 Solr 中编写条件查询?
【发布时间】:2016-07-09 10:52:23
【问题描述】:
我是sonr 的新手,我必须编写一个条件查询。我只是想知道我可以编写一个具有多个条件的查询。
我有四列,查询条件如下:-
列:姓名、地址、城市、州
现在如果有人通过关键字“罗马尼亚”进行搜索,那么结果应该基于以下条件:-
- 如果关键字与名称列匹配,则在名称列中搜索,然后返回数据,不再搜索任何其他列。
- 如果名称列没有该关键字,则进入地址列,如果找到结果则返回数据,否则将进入下一列。
这是一种优先搜索,其中预先定义了要在搜索中使用的列的优先级。如果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 就像在编程中一样,如果第一个查询为假,则移动到下一个查询并移动到下一个查询。