我找到了一个有趣的Solr查询,它返回搜索结果,但我不明白,这些词之间斜杠符号的目的是什么?
duties:health/nurse
有人知道吗?请帮忙。
答案 0 :(得分:1)
简单。您可以查看分析仪链以了解发生的情况。 我的猜测是分析器链将/转换为空格 - 这使查询进入
duties: health nurse
要从配置中找出您的分析仪链 - 首先检查字段的类型
例如
<field name="health" type="text_general" indexed="true" stored="true" required="true"/>
现在我们寻找类型
的定义 <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
如您所见,我们有一个索引分析器和一个查询分析器。
我的查询分析器会使用StandardTokenizerFactory将查询转换为其他内容。
来自solr wiki:
<强> solr.StandardTokenizerFactory 强>
一个很好的通用标记器,它可以去除许多无关的字符并将标记类型设置为有意义的值。令牌类型仅对后续令牌过滤器有用,这些过滤器具有相同令牌类型的类型感知。没有任何过滤器使用StandardTokenizer的类型。
答案 1 :(得分:0)
我认为健康/护士被视为字符串文字,因为之间没有空格。健康/护士应该得到与健康/护士不同的结果,对吗?如果是这样,那么健康/护士必须是您文档中的索引术语。