【问题标题】:Solr query term matchingSolr 查询词匹配
【发布时间】:2014-02-08 23:08:37
【问题描述】:

所以我对 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* 为什么找不到任何东西?

有没有一种简单的方法可以在处理查询时去掉逗号?

谢谢,

【问题讨论】:

  • 您是否真的在使用前导 尾随通配符(例如 q=*sample*)?尽量避免它,read here

标签: solr schema


【解决方案1】:

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

两件事:

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

【讨论】:

    猜你喜欢
    • 2013-04-27
    • 2019-05-18
    • 2012-12-15
    • 2017-03-02
    • 2016-04-26
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多