Solr - 查询所有字段的最佳实践

use*_*299 16 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"/>
Run Code Online (Sandbox Code Playgroud)

现在我想搜索所有字段("id"和"table_type"除外),例如"hello".我怎么能这样做?我真的要写下面的吗?

/solr/select/?q=notes:hello missionFocus:hello name:hello first_name:hello ..
Run Code Online (Sandbox Code Playgroud)

我听说过有关DisMaxRequestHandler的一些内容,但我如何使用此处理程序进行查询?我需要在solrconfig.xml中更改一些内容吗?

hei*_*nob 21

最好的解决方案是构建一个字段,收集这样的所有字段的数据

<field 
    name="collector" 
    type="text_general" 
    indexed="true" 
    stored="false" 
    multiValued="true"
/>
Run Code Online (Sandbox Code Playgroud)

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

<copyField source="notes"        dest="collector"/>
<copyField source="missionFocus" dest="collector"/>
<copyField source="name"         dest="collector"/>
....
Run Code Online (Sandbox Code Playgroud)

请注意,该copyField块必须定义BELOW这样的:

<fields>
....
</fields>
Run Code Online (Sandbox Code Playgroud)

现在,您只能搜索该字段collector,您将在任何字段中找到任何文本.