Reputation: 1498
I am using Solr. I need to search those keyword which we get by using like for example i want to search for x1 carbon , in my sql i search i get the correct result
select * from table where name like "%x1 carbon%"
In solr i get the correct result but i donot get entries with say for example,but i get the below entries in mysql using like "%text%"
x1 carbon x1 carbon x1 carbon .................
My schema is below
<fieldType name="text_general_k" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
What should i do to get the above vaules also like
someword_x1 carbon
and
someword_x1 carbon_ ?
with this schema im not getting
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
<fieldType name="text_general_k" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Im attaching the sceenshot of query analyuzer
Upvotes: 0
Views: 68
Reputation: 8668
Can you try below custom field type for you field.
<fieldType name="likeField" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
With the configuration below the string value Nigerian gets broken down to the following terms
Nigerian => "ni", "nig", "nige", "niger", "nigeri", "nigeria", "nigeria", "nigerian"
Upvotes: 1