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中更改一些内容吗?
答案 0 :(得分:21)
最好的解决方案是建立一个字段,收集所有字段的数据,如
<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
块必须定义为 BELOW :
<fields>
....
</fields>
现在,您只能搜索字段collector
,您会在任何字段中找到任何文字。