solr partial search for alphanumeric field not working -
i using solr 4.4.0. want enable partial search on 1 of fileds i.e. search key abc
return docs having filed value abc123
,abc125
etc. trying via edgengramfilterfactory
.
my schema.xml:
<fields> <field name="variant_sku" type="string" indexed="false" stored="false" required="false" multivalued="false" /> <field name="parsku" type="text_sku" indexed="true" stored="true" multivalued="false" /> </fields> <copyfield source="variant_sku" dest="parsku"/> <copyfield source="parsku" dest="alltext"/> <fieldtype name="text_sku" class="solr.textfield" omitnorms="false"> <analyzer type = "index"> <tokenizer class="solr.standardtokenizerfactory" /> <filter class="solr.standardfilterfactory" /> <filter class="solr.lowercasefilterfactory" /> <filter class="solr.edgengramfilterfactory" mingramsize="2" maxgramsize="15" side="front" /> </analyzer> <analyzer type = "query"> <tokenizer class="solr.standardtokenizerfactory" /> <filter class="solr.standardfilterfactory" /> <filter class="solr.lowercasefilterfactory" /> </analyzer> </fieldtype>
my solrconfig.xml:
<requesthandler name="/query" class="solr.searchhandler"> <lst name="defaults"> <str name="echoparams">explicit</str> <str name="wt">json</str> <str name="indent">true</str> <str name="df">alltext</str> </lst> </requesthandler>
i reloaded , did full data import after making schema changes. partial search not appear. no results returned query abc
edit: changed field_type @d_k suggested to:
<fieldtype name="text_sku" class="solr.textfield" omitnorms="false"> <analyzer type = "index"> <tokenizer class="solr.whitespacetokenizerfactory" /> <filter class="solr.worddelimiterfilterfactory" catenateall="1" splitonnumerics="1" preserveoriginal="1"/> <filter class="solr.edgengramfilterfactory" mingramsize="2" maxgramsize="15" side="front" /> <filter class="solr.lowercasefilterfactory"/> </analyzer> <analyzer type = "query"> <tokenizer class="solr.whitespacetokenizerfactory" /> <filter class="solr.worddelimiterfilterfactory" catenateall="1" splitonnumerics="1" preserveoriginal="1"/> <filter class="solr.edgengramfilterfactory" mingramsize="2" maxgramsize="15" side="front" /> <filter class="solr.lowercasefilterfactory"/> </analyzer> </fieldtype>
also tried:
<fieldtype name="text_sku" class="solr.textfield" omitnorms="false"> <analyzer type = "index"> <tokenizer class="solr.whitespacetokenizerfactory" /> <filter class="solr.edgengramfilterfactory" mingramsize="2" maxgramsize="15" side="front" /> <filter class="solr.lowercasefilterfactory"/> </analyzer> <analyzer type = "query"> <tokenizer class="solr.standardtokenizerfactory" /> <filter class="solr.worddelimiterfilterfactory" catenateall="1" splitonnumerics="1" preserveoriginal="1"/> <filter class="solr.lowercasefilterfactory"/> </analyzer> </fieldtype>
but still facing same issue.
edit2: tried solution here
<fieldtype name="text_sku1" class="solr.textfield" omitnorms="true"> <analyzer> <tokenizer class="solr.whitespacetokenizerfactory" /> <filter class="solr.lowercasefilterfactory" /> <filter class="solr.ngramfilterfactory" maxgramsize="10" mingramsize="2" /> </analyzer> <analyzer type="query"> <tokenizer class="solr.whitespacetokenizerfactory" /> <filter class="solr.lowercasefilterfactory" /> <filter class="solr.ngramfilterfactory" maxgramsize="10" mingramsize="2" /> </analyzer> </fieldtype>
not working either!!
using worddelimiterfilterfactory splitonnumerics=1 option should work fine in case. don't need ngram filter because over-kill index.
so should sufficient:
<fieldtype name="text_sku" class="solr.textfield" omitnorms="false"> <analyzer> <tokenizer class="solr.whitespacetokenizerfactory" /> <filter class="solr.worddelimiterfilterfactory" catenateall="1" splitonnumerics="1" preserveoriginal="1"/> <filter class="solr.lowercasefilterfactory"/> </analyzer> </fieldtype>
few things watch for:
re-index documents if change schema. when change of filters used in index time.
check fields searching against. can see setting df alltext, while changing type of parsku field. hope not mistake, make sure search against parsku field.
if can post search query url, helpful.
Comments
Post a Comment