Apache solr 中不区分大小写的搜索
Case insensitive search in Apache solr
我使用 PHP 在 Solr 中创建了一个字符串类型的搜索应用程序,并且运行良好。唯一发现的问题是它不支持不区分大小写的搜索。搜索后我发现 solr 不支持 "String".
类型的不区分大小写的搜索
所以我创建了一个自定义类型 "string_ci" 并配置如下。
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> -
<field name="loc_code" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="loc_name" type="string_ci" indexed="true" stored="true" required="true" multiValued="false" />
<field name="state" type="string" indexed="true" stored="true" required="true" multiValued="false" />
这是我对 "string_ci"
的字段类型定义
<fieldType name="string_ci" class="solr.TextField"
sortMissingLast="true" omitNorms="true">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
不幸的是,这不起作用。谁能指出我哪里出错了?
试试这个
<fieldType name="string_ci" class="solr.TextField" sortMissingLast="true" omitNorms="true" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
我使用 PHP 在 Solr 中创建了一个字符串类型的搜索应用程序,并且运行良好。唯一发现的问题是它不支持不区分大小写的搜索。搜索后我发现 solr 不支持 "String".
类型的不区分大小写的搜索所以我创建了一个自定义类型 "string_ci" 并配置如下。
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> -
<field name="loc_code" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="loc_name" type="string_ci" indexed="true" stored="true" required="true" multiValued="false" />
<field name="state" type="string" indexed="true" stored="true" required="true" multiValued="false" />
这是我对 "string_ci"
的字段类型定义 <fieldType name="string_ci" class="solr.TextField"
sortMissingLast="true" omitNorms="true">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
不幸的是,这不起作用。谁能指出我哪里出错了?
试试这个
<fieldType name="string_ci" class="solr.TextField" sortMissingLast="true" omitNorms="true" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>