Pra*_*tha 16 solr case-insensitive
我在SOLR搜索中遇到了问题.
我有这样的数据:
 
我使用solr admin使用如下查询查找此数据:
address_s:*Nadi*
Run Code Online (Sandbox Code Playgroud)
并找到了那些数据.但是当我使用这个查询时:
address_s:*nadi*
Run Code Online (Sandbox Code Playgroud)
它没有找到任何东西.
我在Google上搜索,并找到了使用以下脚本创建字段的答案:
<fieldType name="c_text" class="solr.TextField">
    <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)
我将这些脚本复制粘贴到schema.xml中,但它仍然不起作用.我该怎么办?谁能帮我?
Jay*_*dra 12
address_s字段应定义为 -
<field name="address_s" type="c_text" indexed="true" stored="true"/>
Run Code Online (Sandbox Code Playgroud)
如果您使用的是默认的schema.xml,那么这个定义应该在之前 -
<dynamicField name="*_s"  type="string"  indexed="true"  stored="true"/>
Run Code Online (Sandbox Code Playgroud)
它将其定义为字符串字段类型,不执行分析.
通配符查询不进行分析.
因此,如果您在索引时应用小写过滤器,查询address_s:*nadi*将起作用.
但是,查询address_s:*Nadi*不会,因为索引中Nadi不匹配nadi,您需要在客户端小写查询.  
我用它作为字段类型:
<fieldType name="string" class="solr.TextField">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)
并定义了我的字段:
<field name="address" type="string" indexed="true" stored="true"/>
Run Code Online (Sandbox Code Playgroud)
结果:我的文档返回右侧的字段(如插入),我可以搜索不区分大小写(使用大写和小写字母)...
版本:Solr 3.6
您的address_s字段是否c_text在schema.xml中使用此字段类型?
如果已使用先前配置创建索引,则需要重新索引所有内容以将更改考虑在内.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           46414 次  |  
        
|   最近记录:  |