【问题标题】:Solr case-insensitive searchSolr 不区分大小写的搜索
【发布时间】:2015-12-10 20:35:21
【问题描述】:

我有以下架构:

<?xml version="1.0" encoding="UTF-8" ?>
<schema name="customers" version="1.5">
    <types>
        <fieldType name="string" class="solr.StrField" sortMissingLast="true" />
        <fieldType name="string_ci" class="solr.TextField" sortMissingLast="true" omitNorms="true">
            <analyzer type="query">
                <tokenizer class="solr.KeywordTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
            </analyzer>
            <analyzer type="index">
                <tokenizer class="solr.KeywordTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
            </analyzer>
        </fieldType>
    </types>
    <fields>
        <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
        <field name="companyname" type="string_ci" indexed="true" stored="true" required="true" multiValued="false" />
        <field name="contactname" type="string" indexed="true" stored="true" required="true" multiValued="false" />
        <field name="contacttitle" type="string" indexed="true" stored="true" required="true" multiValued="false" />
        <field name="address" type="string" indexed="true" stored="true" required="true" multiValued="false" />
        <field name="city" type="string" indexed="true" stored="true" required="true" multiValued="false" />
        <field name="postalcode" type="string" indexed="true" stored="true" required="false" multiValued="false" />
        <field name="country" type="string" indexed="true" stored="true" required="true" multiValued="false" />
        <field name="phone" type="string" indexed="true" stored="true" required="true" multiValued="false" />
        <field name="fax" type="string" indexed="true" stored="true" multiValued="false" />
        <field name="region" type="string" indexed="true" stored="true" multiValued="false"/>
    </fields>
    <uniqueKey>id</uniqueKey>
</schema>

但是,我无法在companyname 字段上搜索不区分大小写的方式。我使用了http://northwind.servicestack.net/customers.json 提供的示例数据。

当前版本:3.5.0

我尝试过混合和匹配不同的组合,但似乎都不起作用。有高手请指教。

【问题讨论】:

  • 我认为您的意思是“公司名称”字段的搜索不起作用 - 即不区分大小写?
  • @pihentagyu 是的,更新了描述。
  • 您是否使用通配符搜索?我知道这里不能进行不区分大小写的通配符搜索,这意味着这些查询应该小写(转换为客户端)。
  • 问题解决了吗?
  • @pihentagyu 出于某种原因,下面提到的答案不适用于这种情况,因为我正在做通配符搜索。

标签: search solr schema


【解决方案1】:

您能否为您的字段“公司名称”尝试以下字段

<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>



<field name="companyname" type="c_text" indexed="true" stored="true" required="true" multiValued="false" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2012-08-17
    • 2017-02-09
    • 1970-01-01
    • 2012-12-25
    相关资源
    最近更新 更多