Solr 7.3 索引正常 - 但在搜索时返回 0 结果



我的问题和这个一样—— Solr 指数似乎是有效的 - 但除了新宣布的 solr 7.3 之外,没有返回任何结果。

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

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

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

但是,Solr 7.3删除了新版本中的<defaultSearchField>。有没有其他解决方案?如何使其搜索并从所有文档返回结果?

所以从 solr 7.3 开始,对默认字段的支持已被删除。

看这里 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

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

现在的问题是是否要在所有字段中搜索。 您可以使用复制字段。

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

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

<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

请注意,尽管复制字段会复制数据,但它会增加索引大小。

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

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

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

最新更新