我索引了一系列存档网站,以便使用solr进行查询。作为唯一密钥,我使用网站的URL。我想要做的是在过滤查询中使用url字段,以在需要时将搜索限制到某个域。例如,我想查询“Barack Obama”,但将结果限制在“whitehouse.gov”域。听起来像是一个非常基本的用例,但是对URL字段的搜索根本不会返回任何结果。这是我的配置(schema.xml):
.
.
.
<field name="collection" type="string" indexed="true" stored="true"/>
<field name="content" type="text_de" indexed="true" stored="true" multiValued="true"/>
<field name="date" type="string" indexed="true" stored="true"/>
<field name="digest" type="string" indexed="true" stored="true"/>
<field name="length" type="string" indexed="true" stored="true"/>
<field name="segment" type="string" indexed="true" stored="true"/>
<field name="site" type="string" indexed="true" stored="true"/>
<field name="title" type="text_de" indexed="true" stored="true" multiValued="true"/>
<field name="type" type="string" indexed="true" stored="true"/>
<field name="url" type="text_en_splitting" indexed="true" stored="true"/>
.
.
.
<!-- Field to use to determine and enforce document uniqueness.
Unless this field is marked with required="false", it will be a required field
-->
<uniqueKey>url</uniqueKey>
这是我的查询(简化):
http://mysolrserver.com:8983/solr/select/?q=content:Barack+Obama&fq=url:whitehouse.gov
查询分析器告诉我,我的查询应该匹配:
有谁知道为什么这不起作用?我非常感谢我能得到的任何暗示!非常感谢你们!
答案 0 :(得分:2)
fq=url:whitehouse.gov
过滤应该有效。
但是我看到了查询q=content:Barack+Obama
的问题
你的默认搜索字段是什么?
删除查询组件并使用q=*:*
返回结果。 ??
q=content:Barack+Obama
查询实际上会产生content:barack defaultsearchfield:obama
之类的查询
由于默认搜索字段不具有obama,因此不会产生任何结果。