Solr没有返回结果

时间:2017-01-02 00:17:48

标签: search solr

我是Apache Solr的新手,目前正在尝试理解这些概念。我使用的是6.3版。我创建了一个模式并上传了一堆文件。我确实看到有1388份文件可供使用。

当我在管理界面“coursetitle:biztalk”中输入q字段时,我确实得到了相关的结果,但是当我输入“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"/>

3 个答案:

答案 0 :(得分:2)

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

如果未在默认字段中指定任何字段solr搜索,则可以使用模式中的以下内容进行配置。

<defaultSearchField> coursetitle </defaultSearchField>

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

如果您希望搜索所有字段而无需指定字段名称,请查看Copy Fields

我建议您浏览此https://wiki.apache.org/solr/SchemaXml以查看各种字段。

答案 1 :(得分:1)

通常会将一些重要字段复制到字段,该字段用于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>

答案 2 :(得分:0)

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

df=courseid coursetitle course-author

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