solr - 将字段设置为默认搜索字段

时间:2013-07-29 15:26:38

标签: solr solr4

以下查询适用于我

http://[]:8983/solr/vault/select?q=VersionComments%3AWhite

返回版本注释包含白色

的所有文档

我尝试省略字段名称并将其作为默认值,如下所示: 在solr配置中我写

<requestHandler name="/select" class="solr.SearchHandler">
<!-- default values for query parameters can be specified, these
     will be overridden by parameters in the request
  -->
 <lst name="defaults">
   <str name="echoParams">explicit</str>
   <int name="rows">10</int>
   <str name="df">PackageName</str>
   <str name="df">Tag</str>
   <str name="df">VersionComments</str>
   <str name="df">VersionTag</str>
   <str name="df">Description</str>
   <str name="df">SKU</str>
   <str name="df">SKUDesc</str>
 </lst>

我重新启动solr并创建一个完整的导入 然后我尝试使用

 http://[]:8983/solr/vault/select?q=White  

(其中

 http://[]:8983/solr/vault/select?q=VersionComments%3AWhite

仍然有效)

但是我没有把文件作为答案 我做错了什么?

1 个答案:

答案 0 :(得分:11)

据我所知,您应该只在<str name="df"></str>

中声明一次requestHandler

通常我所做的就是将我要搜索的所有字段复制到名为text的默认搜索字段中。

schema.xml中:

<copyField source="name_t" dest="text"/>

solrconfig.xml中

<requestHandler name="/select" class="solr.SearchHandler">
<!-- default values for query parameters can be specified, these
     will be overridden by parameters in the request
-->
<lst name="defaults">
   <str name="q">*:*</str>
   <str name="echoParams">explicit</str>
   <int name="rows">10</int>
   <str name="df">text</str>
</lst>
</requestHandler>

如果这还不够好,您可以随时使用dismax搜索使用qf声明搜索其他字段,如下所示:

http://localhost:8983/solr/vault/select/?q= White&defType=dismax&qf=PackageName+Tag+VersionComments+VersionTag+Description+SKU+SKUDesc