我是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"/>
答案 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!