刚刚安装了Solr,编辑了schema.xml
,我现在正在尝试索引它并使用一些测试数据进行搜索.
在我发送给Solr的XML文件中,我的一个字段看起来像这样:
<field name="PageContent"><![CDATA[<p>some text in a paragrah tag</p>]]></field>
Run Code Online (Sandbox Code Playgroud)
那里有HTML,所以我把它包装在CDATA中.
在我的Solr中schema.xml
,该字段的定义如下所示:
<field name="PageContent" type="text" indexed="true" stored="true"/>
Run Code Online (Sandbox Code Playgroud)
当我运行POSTing工具时,一切正常,但是当我搜索我知道的PageContent
字段内的内容时,我没有得到任何结果.
但是,当我将<defaultSearchField>
节点设置为时PageContent
,它可以工作.但是,如果我将它设置为任何其他字段,它不会搜索PageContent
.
难道我做错了什么?有什么问题?
澄清错误:
我上传了一个包含以下数据的"doc":
<field name="PageID">928</field>
<field name="PageName">some name</field>
<field name="PageContent"><![CDATA[<p>html content</p>]]></field>
Run Code Online (Sandbox Code Playgroud)
在我的架构中,我已经定义了这样的字段:
<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"/>
Run Code Online (Sandbox Code Playgroud)
和:
<uniqueKey>PageID</uniqueKey>
<defaultSearchField>PageName</defaultSearchField>
Run Code Online (Sandbox Code Playgroud)
现在,当我使用Solr管理工具并搜索" some name
"时,我得到一个结果.但是,如果我搜索" html content
"," html
"," content
"或" 928
",我就没有结果
为什么?
您提到您的默认搜索字段设置为PageName,我不希望搜索"内容"返回任何内容.
您可能打算在搜索框中输入"PageContent:content"来查找该字段中的数据.如果你想搜索多个字段,你可以查看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>
Run Code Online (Sandbox Code Playgroud)