Solr 7.3 索引良好 - 但 returns 搜索结果为 0

Solr 7.3 is indexing fine - but returns 0 result on searching

我的问题和这个一样- Solr Index appears to be valid - but returns no results 但对于新发布的 solr 7.3。

我创建了一个 Solr 索引并将一大堆文档写入其中。我可以从 Solr 管理页面看到文档存在并且模式也很好。但是当我使用测试关键字执行搜索时,我没有得到任何结果。

在查询中输入 * : * 时(在 Solr 管理页面),我得到了所有结果。

但是,当我输入任何其他查询(例如术语或短语)时,我没有得到任何结果。我已验证正在查询的字段已编入索引并包含我正在搜索的值。

Solr 7.3 但是在新版本中删除了 <defaultSearchField>。有没有替代解决方案?如何让它从所有文档中搜索和 return 结果?

生成的查询最好明确显示,但您仍然可以使用 df 请求参数来指定默认搜索字段。

使用 dismax 解析器,您还可以在 solrconfig.xml 中的 requestHandler 定义中为 qf 参数指定默认值(如果 df 将不会生效 qf 已定义)。

仍然值得注意的是,字段必须被索引为 text 而不是 string 才能被正确搜索。

所以从 solr 7.3 开始,对 default 字段的支持已经被移除。

看这里https://lucene.apache.org/solr/guide/7_3/major-changes-in-solr-7.html?hl=defaultSearchField#other-deprecations-and-removals

现在,当您在搜索时不指定字段时,没有默认字段可供搜索。 唯一的方法是使用 df 运算符。因此,在您的情况下,如果您希望在未指定字段的情况下搜索类别字段,然后使用以下查询:

q=https://ip:port/select?q=apple&wt=json&df=category

因此您需要在查询本身中指定默认字段。

现在是要在所有字段中搜索的问题。你可以使用 copyField.

因此您可以在您的架构文件中创建一个复制字段。在未指定任何内容时复制要搜索的所有字段,然后在 df 中使用该字段。

例如,在您的架构中定义一个名为 text 的字段

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

现在为此定义一些复制字段。

 <copyField source="category" dest="_text_" />
 <copyField source="first_name" dest="_text_" />

然后在您的查询中您可以这样做

q=https://ip:port/select?q=apple&wt=json&df=_text_

在此处阅读有关复制文件的更多信息: https://lucene.apache.org/solr/guide/7_3/copying-fields.html

请注意,虽然复制字段是复制数据,但它会增加您的索引大小。