包含斜杠的Solr查询

时间:2016-02-08 13:14:23

标签: search solr

我找到了一个有趣的Solr查询,它返回搜索结果,但我不明白,这些词之间斜杠符号的目的是什么?

duties:health/nurse

有人知道吗?请帮忙。

2 个答案:

答案 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)

我认为健康/护士被视为字符串文字,因为之间没有空格。健康/护士应该得到与健康/护士不同的结果,对吗?如果是这样,那么健康/护士必须是您文档中的索引术语。