我使用过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。
我该如何解决这个问题?
答案 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并重新索引记录。