Solr查询词匹配

时间:2014-01-19 21:22:29

标签: solr schema

所以我对Solr相对较新,我对一个术语的匹配以及我出错的语法也有疑问。

假设我有以下架构:

<field name="s_broker_name" type="search_text_type" indexed="true" stored="false" multiValued="true"/>
...
<copyField source="broker_name" dest="s_broker_name"/>
...
    <fieldType name="search_text_type" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.TrimFilterFactory" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.TrimFilterFactory" />
  </analyzer>
</fieldType>

如果我将broker_name的值索引为“Dylan,Bob”,我的查询语法是s_broker_name:* Dylan,Bob *为什么找不到任何东西?

有一种简单的方法可以在处理查询时删除逗号吗?

感谢,

1 个答案:

答案 0 :(得分:0)

Solr的非常方便的功能是它的分析页面。只需选择此字段并在查询中键入您的内容,然后查看分析链的运行方式。

两件事:

  1. ,将被StandardTokenizerFactory
  2. 剥离
  3. 剥离*在StandardTokenizerFactory之后使用StandardFilterFactory或不要键入那些
  4. 为了针对同一字段进行搜索,请确保使用括号:s_broker_name :( Dylan,Bob)。否则,将针对在solrconfig.xml中配置为默认字段的内容搜索Bob。