Solr 字段没有 return 结果

Solr Field does not return results

Solr 不会 return 结果,直到我在 :field 名称前加上前缀,例如 我正在搜索 Ajay,我需要前缀 name:Ajay 才能获得 results.I 尝试了副本 tag.But 它似乎没有 return results.Can 你请告诉除了下面的改变,我还能改变什么。

<copyField source="name" dest="text"/>
<copyField source="last_name" dest="text"/>

如果您查看 solrconfig.xml 文件,您会看到 /select requestHandler 配置了默认搜索字段如:

<lst name="defaults">
  <str name="df">aField</str>
</lst>

在这里,您可以输入您想要的字段,例如:

<lst name="defaults">
  <str name="df">name</str>
</lst>

您可以查看另一个关于 this subject and the 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>

旧的配置方式是 schema.xml 中的 <defaultSearchField>。如果查询中没有包含其他字段,则表示默认搜索的字段。

您可能想在查询中使用 df 参数(或者如其他答案所述,将其添加为默认值),或者如果您使用的是 (e)dismax 处理程序 (你可能是),使用 qf 参数来指示要查询的字段以及不同字段之间的权重。

q=Ajay&qf=text&defType=edismax

..应该做你想做的事。