2012-02-27 59 views
9
  • 我使用的Solr 3.3.0使用例如文件夹
  • solrQueryParser defaultOperator = “或”

我的问题是,没有按Solr的”开箱即用的工作当我搜索一个多词词组时,t似乎返回了很好的结果。多字的查询上Solr的

以下搜索不返回任何结果。

  1. http://localhost:8080/solr/select/?q=roof+fixing

然而,当我搜索屋顶固定,他们都返回了几个不错的成绩。

  1. http://localhost:8080/solr/select/?q=roof返回4结果
  2. http://localhost:8080/solr/select/?q=fixing返回3个结果

在查询 “屋顶固定”,我希望Solr的返回7个结果。 屋顶的4条记录和修复的3条记录。

是否有任何特殊配置需要发生?

回答

8

您刚才错误地表达了您的查询。

尝试从管理页面下面的查询:

(屋顶或固定)

或者,如果你想找到在某一特定领域:

字段名:(屋顶或固定)

当你给SOLR一个像“屋顶修理”这样的查询时,你有效地要求在默认字段(或默认的dismax字段集合)中包含“屋顶”和“修复”的所有文档。意思是重写你的查询用户输入。这就是我们所做的,但规模较大。我们有一个前端界面,提供了大量的选项并从中生成一个SOLR查询。人们可以在特定字段中输入搜索词,如果有多个词并且没有被引用,我们添加AND。然后我们把所有填充的字段或者放在一起。有些字段是特殊的,有一个MIN和一个MAX版本,我们把它变成范围查询:[0 TO 125000]。还有一些下拉菜单可以支持多种选择,我们也可以将它们变成一个OR,例如State:("WA" OR "CA" OR "OR" OR "NV")

+0

我想我理解你的观点,但是,我让用户通过前端界面进行搜索,所以我不能要求用户输入*(屋顶或固定)*。 – Filype 2012-02-27 20:54:01

+0

感谢您的额外解释,但通过输入http:// localhost:8080/solr/select /?q =(roof%20OR%20fixing) – Filype 2012-02-27 22:14:36

+1

Filype,我似乎没有得到更多结果如果您要让用户搜索前端,并期待搜索行为或搜索行为,则应在发送给SOLR之前在后端处理它们的查询。如上所述,您应该使用圆括号准备您的值。如果要添加OR或AND,请给用户一个选项,检测该选项,然后在将它们传递给SOLR之前将它们准备并注入到SOLR查询中。 – Atomox 2013-04-30 14:25:19

0

Solr的方法不一定返回7个结果“屋顶或固定”作为一个结果可能包括“屋顶”和“固定”。假设“屋顶”有3个结果,“固定”有4个结果,但“屋顶”和“固定”都出现在2个结果中。由于Solr不会返回重复结果,因此只能搜索“屋顶或修复”的5个结果。

您是否尝试过使用网址编码空间(“%20”)而不是“+”号?如果默认的操作符是OR,则不需要包含该操作符。

+0

屋顶%20fixing也返回0结果,我理解你的观点,无论它是7还是5,我都会至少期待4结果。 – Filype 2012-02-27 21:04:00

+0

您正在搜索的字段是否可能未被标记? – 2012-02-28 02:54:55

+0

我的管理员屏幕显示它是一个字段类型TEXT_EN – Filype 2012-02-28 03:06:21