Apache Solr automatically search with (*) -
good evening,
when search word "app" dont show word "apple". if search "app*", show "apple" , "app". dont want write "*" in search bar. how can if search "app" , shows "apple" , "app"?
<fieldtype name="text_general" class="solr.textfield" positionincrementgap="100" multivalued="true"> <analyzer type="index"> <tokenizer class="solr.standardtokenizerfactory"/> <filter class="solr.stopfilterfactory" words="stopwords.txt" ignorecase="true"/> <filter class="solr.lowercasefilterfactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.standardtokenizerfactory"/> <filter class="solr.stopfilterfactory" words="stopwords.txt" ignorecase="true"/> <filter class="solr.synonymfilterfactory" expand="true" ignorecase="true" synonyms="synonyms.txt"/> <filter class="solr.lowercasefilterfactory"/> </analyzer> i tried add <filter class="solr.reversedwildcardfilterfactory"/> didnt work.
can me?
i use apache solr 6.4.1
sry bad english.
use edgengramfilterfactory
edgengramfilterfactory :
this filter generates edge n-gram tokens of sizes within given range.
arguments:
- mingramsize: (integer, default 1) minimum gram size.
- maxgramsize: (integer, default 1) maximum gram size.
example :
if use mingramsize = 1 , maxgramsize = 4
in: "four score"
tokenizer filter: "four", "score"
out: "f", "fo", "fou", "four", "s", "sc", "sco", "scor"
for case can use below schema :
<fieldtype name="text_ngram" class="solr.textfield" positionincrementgap="100"> <analyzer type="index"> <tokenizer class="solr.standardtokenizerfactory"/> <filter class="solr.stopfilterfactory" words="stopwords.txt" ignorecase="true"/> <filter class="solr.lowercasefilterfactory" /> <filter class="solr.edgengramfilterfactory" mingramsize="1" maxgramsize="200"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.standardtokenizerfactory"/> <filter class="solr.stopfilterfactory" words="stopwords.txt" ignorecase="true"/> <filter class="solr.synonymfilterfactory" expand="true" ignorecase="true" synonyms="synonyms.txt"/> <filter class="solr.lowercasefilterfactory" /> </analyzer> </fieldtype> and update fieldtype text_ngram ex.
<field name="name" type="text_ngram" indexed="true" stored="false" multivalued="true"/> note : don't forget reload core , reindex data
Comments
Post a Comment