【问题标题】:solr - set fileds as default search fieldsolr - 将字段设置为默认搜索字段
【发布时间】:2013-07-29 15:26:38
【问题描述】:

以下查询对我很有效

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

返回版本 cmets 包含 White 的所有文档

我尝试省略字段名称并将其作为默认值,如下所示: 在 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

仍然有效)

但我没有得到任何文档作为答案。
我做错了什么?

【问题讨论】:

  • 使用 edismax 解析器重新打开 question

标签: solr solr4


【解决方案1】:

据我所知,您应该只在您的requestHandler 中声明一次&lt;str name="df"&gt;&lt;/str&gt;

通常我所做的是将我想要搜索的所有字段复制到名为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&amp;defType=dismax&amp;qf=PackageName+Tag+VersionComments+VersionTag+Description+SKU+SKUDesc

【讨论】:

  • 感谢您的回答。 1.我应该使用dismax还是edismax? 2. 为什么要使用复制字段?
  • 我使用 edismax,这是 dismax 搜索的新标准;但这真的取决于你。使用 copyFields 可以让您搜索多个字段,从而加快搜索速度。
猜你喜欢
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多