Solr 不返回结果



我对Apache Solr很陌生,目前正在尝试理解这些概念。我使用的是 6.3 版。我创建了一个架构并上传了一个包含一堆文档的文件。我确实看到有 1388 份文件可用。

当我在管理 UI 中输入 q 字段"课程标题:biztalk"时,我确实会得到相关结果,但当我输入"biztalk"时却没有。我以为我不需要提供字段名称?

下面是架构:

<field name="courseid" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="coursetitle" type="text_general" indexed="true" stored="true" multiValued="false"/>
<field name="coursetitlesearch" type="text_general" indexed="true" stored="true" multiValued="false"/>
<field name="durationinseconds" type="int" indexed="true" stored="true" />
<field name="releasedate" type="date" indexed="true" stored="true"/>
<field name="description" type="text_general" indexed="true" stored="true"/>
<field name="assessmentstatus" type="text_general" indexed="true" stored="true"/>
<field name="iscourseretired" type="text_general" indexed="true" stored="true"/>
<field name="tag" type="string" multiValued="true" indexed="true" stored="true"/>
<field name="course-author" type="string" multiValued="true" indexed="true" stored="true"/>

您需要指定该字段,除非您要将其搜索为默认字段。

当您未在默认字段中指定任何字段时,可以使用架构中的以下内容进行配置。

<defaultSearchField> coursetitle </defaultSearchField>

因此,如果您将上述内容放在架构中.xml然后搜索类似biztalk查询参数中,solr 会将其搜索为coursetitle:biztalk

如果您希望搜索所有字段而不必指定字段名称,请浏览Copy Fields

我建议您通过此 https://wiki.apache.org/solr/SchemaXml 查看各个字段。

通常,一些重要的字段被复制到Solr用于搜索默认值的字段中。所以我建议你使用相同的复制字段

例:

<defaultSearchField>SEARCHINDEX</defaultSearchField>
<copyField source="AUTHOR" dest="SEARCHINDEX"/>
<copyField source="coursetitle" dest="SEARCHINDEX"/>
<copyField source="coursetitlesearch" dest="SEARCHINDEX"/>
<copyField source="SUBTITLE" dest="SEARCHINDEX"/>

现在,您可以使用SEARCHINDEX字段来搜索所有其他字段内容。 由于使用defaultSearchField已弃用,因此 solrconfig.xml 中的请求处理程序定义了优先的"df"

<initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse">
<lst name="defaults">
<str name="df">text</str>
</lst>
</initParams>

经过一番研究,看起来通过使用 edismax,我们确实可以在 df 中传递默认字段的列表(空格分隔),例如:

df=courseid coursetitle course-author

这样,我们就不需要使用 copyField!

最新更新