2014-01-19 148 views
0

所以我是比较新的Solr的和我有一个关于它的一个术语,也许在那里我错了语法的匹配查询..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 *为什么不能找到任何内容?

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

谢谢,

+0

你真的在使用前导_and_尾随通配符(例如q = * sample *)吗?尽量避免它,[阅读](http://lucene.472066.n3.nabble.com/Wildcard-searches-with-leading-and-ending-wildcard-td3992086.html)。 – cheffe

回答

0

Solr非常方便的功能是它的分析页面。只需选择此字段并输入查询中的内容,然后查看分析链的结果。

两件事情:

  1. 的,将被StandardTokenizerFactory
  2. 剥离剥离*使用StandardFilterFactory StandardTokenizerFactory后或不输入那些
  3. ,以获得对同一领域的搜索,确保使用圆括号:s_broker_name:(Dylan,Bob)。否则,Bob将搜索solrconfig.xml中配置为默认字段的内容。