xml - Solr - 查询全域最佳实践

标签 xml solr handler

schema.xml 片段:

   <field name="id" type="string" indexed="true" stored="true" required="true" />
   <field name="notes" type="text_general" indexed="true" stored="true"/>
   <field name="missionFocus" type="text_general" indexed="true" stored="true"/>
   <field name="name" type="text_general" indexed="true" stored="true"/>
   <field name="first_name" type="text_general" indexed="true" stored="true"/>
   <field name="last_name" type="text_general" indexed="true" stored="true"/>
   <field name="about_me" type="text_general" indexed="true" stored="true"/>
   <field name="message" type="text_general" indexed="true" stored="true"/>
   <field name="title" type="text_general" indexed="true" stored="true"/>  
   <field name="table_type" type="string" indexed="true" stored="true"/>  

   <field name="text" type="text_general" indexed="true" stored="false" 
          multiValued="true"/>

现在我想在所有字段(“id”和“table_type”除外)中搜索例如“你好”。我该怎么做?我真的必须写以下内容吗?

/solr/select/?q=notes:hello missionFocus:hello name:hello first_name:hello ..

我听说过有关 DisMaxRequestHandler 的消息,但我必须如何使用此处理程序进行查询?我是否需要为此更改 solrconfig.xml 中的某些内容?

最佳答案

最好的解决办法是建立一个字段,像这样收集所有字段的数据

<field 
    name="collector" 
    type="text_general" 
    indexed="true" 
    stored="false" 
    multiValued="true"
/>

您现在唯一要做的就是,将所有字段的内容复制到该字段中:

<copyField source="notes"        dest="collector"/>
<copyField source="missionFocus" dest="collector"/>
<copyField source="name"         dest="collector"/>
....

请注意,copyField block 必须定义为BELOW:

<fields>
....
</fields>

现在您只能在字段 collector 上搜索,您将在您的任何字段中找到任何文本。

关于xml - Solr - 查询全域最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12833592/

相关文章:

在非索引字段上搜索 Solr 查询

Android 处理程序定期

python - 在 Python 中将参数传递给 UDP 处理程序

java - 在 android studio 项目中显示文本

java - 从远程网站查询 Solr

hibernate - 如何使用 spring mvc 配置 ApacheSolr?

c# - Web API - 405 - 请求的资源不支持 http 方法 'PUT'

xml - 如何添加具有新 ID 的第二个元素?

java - 使用 scala 处理某些 xml 时出现内存不足错误

xml - Expressjs 响应作为 JSON 和 Xml