Solr不会返回结果,直到我为:field name添加前缀为例 我正在寻找Ajay,我需要前缀name:Ajay来获得结果。我尝试了复制标签。但它似乎没有返回结果。可以告诉我除了以下更改之外我还能改变什么。< / p>
<copyField source="name" dest="text"/>
<copyField source="last_name" dest="text"/>
答案 0 :(得分:2)
配置的旧方法是schema.xml中的<defaultSearchField>
。如果查询中未包含其他字段,则表示默认搜索的字段。
您可能希望在查询中使用df
参数(或者如其他答案所示,将其添加为默认值),或者如果您正在使用(e)dismax处理程序( (你可能是),使用qf
参数来指出要查询的字段以及不同字段之间的权重。
q=Ajay&qf=text&defType=edismax
..应该做你想做的事。
答案 1 :(得分:1)
如果查看solrconfig.xml
文件,您会看到 / select requestHandler
配置了默认搜索字段:
<lst name="defaults">
<str name="df">aField</str>
</lst>
在这里,您可以输入您想要的字段,例如:
<lst name="defaults">
<str name="df">name</str>
</lst>
您可以看到有关this subject和Solr Documentation的其他主题。
要构建可搜索字段,您可以在schema.xml
中创建新字段:
<field name="searchable_field" type="text_general" indexed="true" stored="true" multiValued="true" />
之后,您可以在新字段中复制所需的字段:
<copyField source="name" dest="searchable_field"/>
<copyField source="last_name" dest="searchable_field"/>
<copyField source="birthday" dest="searchable_field"/>
<copyField source="location" dest="searchable_field"/>
要完成,您只需将此新字段添加到solrconfig.xml
:
<lst name="defaults">
<str name="df">searchable_field</str>
</lst>