Reputation: 565
I'm using Solrj as a client for Solr, in order to perform a case-insensitive query, i've declared the custom following type in my schema.xml file
<fieldType name="text_ci" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Then i have a field that uses this type, the match is executed against this field
<field name="name" type="text_ci" indexed="true" stored="true"/>
The problem is when i execute my query in Solrj's admin panel everything is fine and i got my results but from my java application (using solrj) the search seems to be case sensitive and i didn't find where i can specify and tell solrj that i want to perform a case insensitive search
As asked i've added here my solrj code
String[] filters = new String[1];
filters[0] = "name:\"Obama\”";
String[] fields = new String[] { "uuid", "name" };
q = "all:*%s*";
SolrQuery query = new SolrQuery();
query.setQuery(q);
query.addFilterQuery(filters);
query.setFields(fields);
query.setStart(0);
query.setRows(5);
QueryResponse response = this.solrInstance.query(query);
SolrDocumentList results = response.getResults();
Do you have any idea guys ? Did i miss something ?
Thank you
Upvotes: 0
Views: 825
Reputation: 565
I ended up creating a new type
<fieldType name="ci_text" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="mysuperfield" type="ci_text" indexed="true" stored="true"/>
With this type now i can perform case-incensitive search on mysuperfield
Upvotes: 1