Babu James
Babu James

Reputation: 2843

Solr case-insensitive search

I have the following schema:

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

However, I do not get to search the case insensitive way oncompanyname field. I used the sample data available at http://northwind.servicestack.net/customers.json.

Current version: 3.5.0

I have tried mixing and matching with different combinations and none seems to work. Some experts out there, please advise.

Upvotes: 1

Views: 1285

Answers (1)

Abhijit Bashetti
Abhijit Bashetti

Reputation: 8678

Could you try the below field for your field "companyname"

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

Upvotes: 1

Related Questions