solr - 将字段设置为默认搜索字段 [英] solr - set fileds as default search field

查看:23
本文介绍了solr - 将字段设置为默认搜索字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下查询对我来说效果很好

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

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

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

<!-- 可以指定查询参数的默认值,这些将被请求中的参数覆盖--><lst name="defaults"><str name="echoParams">显式</str><int name="rows">10</int><str name="df">PackageName</str><str name="df">标签</str><str name="df">VersionComments</str><str name="df">VersionTag</str><str name="df">描述</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

仍然有效)

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

解决方案

据我所知,你应该只声明 <str name="df"></str>一次在您的 requestHandler

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

schema.xml:

solrconfig.xml

<!-- 可以指定查询参数的默认值,这些将被请求中的参数覆盖--><lst name="defaults"><str name="q">*:*</str><str name="echoParams">显式</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>

The following query works well for me

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

returns all the documents where version comments includes White

I try to omit the field name and put it as a default value as follows : In solr config I write

<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>

I restart the solr and create a full import.
Then I try using

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

(Where

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

still works)

But I dont get the document any as answer.
What am I doing wrong?

解决方案

As far as I know you should only have the <str name="df"></str> declared once in your requestHandler

Typically what I do is copy all the fields that i want to search into a default search field called 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>

If this is not good enough, you can always search other fields using a dismax search with the qf declaration like so:

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

这篇关于solr - 将字段设置为默认搜索字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆