- 我使用的Solr 3.3.0使用例如文件夹
- solrQueryParser defaultOperator = “或”
我的问题是,没有按Solr的”开箱即用的工作当我搜索一个多词词组时,t似乎返回了很好的结果。多字的查询上Solr的
以下搜索不返回任何结果。
然而,当我搜索屋顶或固定,他们都返回了几个不错的成绩。
在查询 “屋顶固定”,我希望Solr的返回7个结果。 屋顶的4条记录和修复的3条记录。
是否有任何特殊配置需要发生?
我的问题是,没有按Solr的”开箱即用的工作当我搜索一个多词词组时,t似乎返回了很好的结果。多字的查询上Solr的
以下搜索不返回任何结果。
然而,当我搜索屋顶或固定,他们都返回了几个不错的成绩。
在查询 “屋顶固定”,我希望Solr的返回7个结果。 屋顶的4条记录和修复的3条记录。
是否有任何特殊配置需要发生?
您刚才错误地表达了您的查询。
尝试从管理页面下面的查询:
(屋顶或固定)
或者,如果你想找到在某一特定领域:
字段名:(屋顶或固定)
当你给SOLR一个像“屋顶修理”这样的查询时,你有效地要求在默认字段(或默认的dismax字段集合)中包含“屋顶”和“修复”的所有文档。意思是重写你的查询用户输入。这就是我们所做的,但规模较大。我们有一个前端界面,提供了大量的选项并从中生成一个SOLR查询。人们可以在特定字段中输入搜索词,如果有多个词并且没有被引用,我们添加AND。然后我们把所有填充的字段或者放在一起。有些字段是特殊的,有一个MIN和一个MAX版本,我们把它变成范围查询:[0 TO 125000]
。还有一些下拉菜单可以支持多种选择,我们也可以将它们变成一个OR,例如State:("WA" OR "CA" OR "OR" OR "NV")
Solr的方法不一定返回7个结果“屋顶或固定”作为一个结果可能包括既“屋顶”和“固定”。假设“屋顶”有3个结果,“固定”有4个结果,但“屋顶”和“固定”都出现在2个结果中。由于Solr不会返回重复结果,因此只能搜索“屋顶或修复”的5个结果。
您是否尝试过使用网址编码空间(“%20”)而不是“+”号?如果默认的操作符是OR,则不需要包含该操作符。
我想我理解你的观点,但是,我让用户通过前端界面进行搜索,所以我不能要求用户输入*(屋顶或固定)*。 – Filype 2012-02-27 20:54:01
感谢您的额外解释,但通过输入http:// localhost:8080/solr/select /?q =(roof%20OR%20fixing) – Filype 2012-02-27 22:14:36
Filype,我似乎没有得到更多结果如果您要让用户搜索前端,并期待搜索行为或搜索行为,则应在发送给SOLR之前在后端处理它们的查询。如上所述,您应该使用圆括号准备您的值。如果要添加OR或AND,请给用户一个选项,检测该选项,然后在将它们传递给SOLR之前将它们准备并注入到SOLR查询中。 – Atomox 2013-04-30 14:25:19