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

Popular posts from this blog

inversion of control - Autofac named registration constructor injection -

verilog - Systemverilog dynamic casting issues -

ios - Change Storyboard View using Seague -