SOLR 不搜索某些字段

2024-04-01

刚刚安装Solr,编辑了schema.xml,现在正在尝试对其进行索引并使用一些测试数据进行搜索。

在我发送到 Solr 的 XML 文件中,我的字段之一如下所示:

<field name="PageContent"><![CDATA[<p>some text in a paragrah tag</p>]]></field>

那里有 HTML,所以我将其包装在 CDATA 中。

在我的 Solr 中schema.xml,该字段的定义如下所示:

<field name="PageContent" type="text" indexed="true" stored="true"/>

当我运行 POSTing 工具时,一切正常,但是当我搜索我知道在其中的内容时PageContent场,我没有得到任何结果。

但是,当我设置<defaultSearchField>节点到PageContent, 有用。但如果我将其设置为任何其他字段,它不会搜索PageContent.

难道我做错了什么?有什么问题吗?


澄清错误:

我上传了包含以下数据的“文档”:

<field name="PageID">928</field>
<field name="PageName">some name</field>
<field name="PageContent"><![CDATA[<p>html content</p>]]></field>

在我的架构中,我已将字段定义为:

<field name="PageID" type="integer" indexed="true" stored="true" required="true"/>
<field name="PageName" type="text" indexed="true" stored="true"/>
<field name="PageContent" type="text" indexed="true" stored="true"/>

And:

<uniqueKey>PageID</uniqueKey>
<defaultSearchField>PageName</defaultSearchField>

现在,当我使用 Solr 管理工具并搜索“some name“我得到了结果。但是,如果我搜索”html content", "html", "content" or "928“,我没有得到任何结果

Why?


您提到您的默认搜索字段设置为 PageName,我不希望搜索“内容”返回任何内容。

您可能想将“PageContent:content”放入搜索框中以查找该字段中的数据。如果您想搜索多个字段,您需要检查一下http://wiki.apache.org/solr/DisMaxRequestHandler http://wiki.apache.org/solr/DisMaxRequestHandler。 solr 管理控制台并不是一个可以使用所有 DisMax 搜索选项的好工具,您只需操纵 URL 即可。

无论如何,我同意上一张海报,如果您的分析设置没有正确设置来处理 HTML,您可能会得到各种意想不到的搜索结果。仅删除 HTML 和索引文本。

如果您希望标准查询处理程序搜索所有字段,您可以在 solrconfig.xml 中更改它(我总是添加第二个查询处理程序而不是修改“标准”。qf 字段是您要搜索的字段列表. 这是一个空格分隔的列表。

<requestHandler name="standard" class="solr.DisMaxRequestHandler">

     <lst name="defaults">
            <str name="echoParams">all</str>
            <str name="hl">true</str>

            <str name="fl">*</str>
            <str name="qf">PageName PageContent</str>
     </lst>

 </requestHandler>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SOLR 不搜索某些字段 的相关文章

随机推荐