solr过滤查询参数

时间:2012-03-16 12:12:17

标签: solr

我的solr配置如下:

`
  

 <lst name="defaults">
    <str name="defType">dismax</str>
    <str name="q.alt">*:*</str>
    <str name="qf">
        city^10.0 name^10.0 city_l10n_value^10.0 name_l10n_value^10.0 state^5.0 country^2.0
    </str>
    <str name="sort">hotel_count desc,query({!v="type:(airport OR train_station)"}) desc ,score desc</str>
    <str name="tie">0.1</str>
   <str name="echoParams">explicit</str>
   <int name="rows">100</int>
 </lst>

`

我正在使用的架构是:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
   <filter class="solr.LengthFilterFactory" min="2" max="100"/>      
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SnowballPorterFilterFactory" language="German2" />        
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LengthFilterFactory" min="2" max="100"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SnowballPorterFilterFactory" language="German2" />        
  </analyzer>
</fieldType>
<field name="type" type="text_general" indexed="true" stored="true"/>
......

现在,在索引搜索结果后,如下所示:

<result name="response" numFound="114" start="0">
<doc><str name="type">airport</str></doc>
<doc><str name="type">train_station</str></doc>
<doc><str name="type">tourist_feature</str></doc>
<doc><str name="type">company_location</str></doc>
<doc><str name="type">company_location</str></doc>
<doc><str name="type">company_location</str></doc>
<doc><str name="type">company_location</str></doc>
<doc><str name="type">company_location</str></doc>

不幸的是,如果我运行查询查询,

http://localhost:8983/solr/maincore/select/?fq=type:company_location

它不会返回任何内容。

http://localhost:8983/solr/maincore/select/?fq=type:tourist_feature

会返回一些匹配。

这是什么,我做错了什么?

1 个答案:

答案 0 :(得分:3)

对于过滤器查询,您应该使用非标记化字段。

http://wiki.apache.org/solr/SolrFacetingOverview

  

因为分面字段通常被指定用于两个目的,   人类可读的文本和深入查询值,它们经常出现   索引与用于搜索和排序的字段不同:

     
      
  • 它们通常不会被标记为单独的词语
  •   
  • 它们通常不会映射到小写
  •   
  • 通常不会删除人类可读的标点符号(双引号除外)
  •   
  • 通常不需要存储它们,因为存储的值看起来很像索引值,并且分面机制用于值检索。
  •