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 次 |
最近记录: |