如何解决不区分大小写搜索文本数据的问题

时间:2014-04-10 13:26:04

标签: java solr solrj

我使用过solr4.7并且我在DB中有多条记录,我已成功搜索小写的区分大小写的数据。

我有很多尝试解决这个问题,我很累,

我的其中一个代码是schema.xml文件代码,如下所示

<schema name="springExample" version="1.5">
<fields>
    <field name="name" type="text_general" indexed="true" stored="true" required="true" />
</fields>
<types>
        <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">

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

并为dataSource和document配置config.xml文件。

<dataConfig>
    <dataSource driver="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/koupon"
        user="root"
        password="root" />
    <document>
        <entity name="koupon" 
            query="SELECT name FROM koupon;">
                <field column="name" name="name"/>
        </entity>
    </document>
</dataConfig>

和获取特定数据的java代码

solrParams = new ModifiableSolrParams();
solrParams.add("q","name:TE*");
solrParams.add("wt","json");
solrParams.add("indent","true");
queryResponse = server.query(solrParams);
solrParams.clear();

System.out.println(queryResponse.getResults());

and I am searching for 'name' field like 

测试类别,测试,TEst。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我在schema.xml中的配置是:

<fieldType name="text_wslc" class="solr.TextField" positionIncrementGap="100">
      <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>

并接受大写和小写,请尝试删除其他标签。

注意:请记住重新启动您的solr以应用更改 希望它有所帮助:)

答案 1 :(得分:0)

尝试在minGramSize=2的属性中设置EdgeNGramFilterFactory,从查询中删除星号:solrParams.add("q","category:te");,重新启动Solr并重新索引记录。