Determining the type solr fieldType to process the value of a multipart word field

I have a solr in my application and I need to consider the following scenario: I have a field with three values: coffee shops Donut shops sports stores

The problem is that when I look for "coffee houses", I get all documents that have any of the above values. the reason is that everyone has "shops." I am trying to change this search behavior, so when I search for “cafe”, I get documents that have only “cafe”, and when I search for “shops”, I get documents that have all of the above values. below my definition of fieldType

  <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        <filter class="solr.ReversedWildcardFilterFactory"/>
        <filter class="solr.WordDelimiterFilterFactory"
                splitOnNumerics="0"
                stemEnglishPossessive="1"
                splitOnCaseChange="1"
                generateWordParts="1"
                generateNumberParts="1"
                catenateWords="1"
                catenateNumbers="1"
                catenateAll="0"
                preserveOriginal="1"                
                protected="protwords.txt"/>
        <filter class="solr.StopFilterFactory" 
                ignoreCase="true" 
                words="stopwords.txt" 
                enablePositionIncrements="true" /> 
        <filter class="solr.HunspellStemFilterFactory"
                dictionary="en_US.dic"
                affix="en_US.aff"
                ignoreCase="true" />       
      </analyzer>
      <analyzer type="query">        
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <charFilter class="solr.HTMLStripCharFilterFactory"/>        
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.TrimFilterFactory"/>
        <filter class="solr.WordDelimiterFilterFactory"
                splitOnNumerics="0"
                stemEnglishPossessive="1"
                splitOnCaseChange="1"
                generateWordParts="1"
                generateNumberParts="1"
                catenateWords="0"
                catenateNumbers="0"
                catenateAll="0"
                preserveOriginal="1"                
                protected="protwords.txt"/>
        <filter class="solr.StopFilterFactory" 
                ignoreCase="true" 
                words="stopwords.txt" 
                enablePositionIncrements="true" />
        <filter class="solr.HunspellStemFilterFactory"
                dictionary="en_US.dic"
                affix="en_US.aff"
                ignoreCase="true" />
      </analyzer>
    </fieldType>

Thank you

+3
source share
2 answers

, , sac à main (handbag ), sac, . , sac sac à main.

:

schema.xml :

<fieldType name="text" class="solr.TextField" indexed="true" stored="true" multiValued="true" positionIncrementGap="100">
  <analyzer type="index"><filter class="solr.SynonymFilterFactory"
      synonyms="fr_expressions.txt"
      ignoreCase="true"
      expand="true" /></analyzer>
  <analyzer type="query"><filter class="solr.SynonymFilterFactory"
      synonyms="fr_expressions.txt"
      ignoreCase="true"
      expand="false" /></analyzer>
</fieldType>

fr_expressions.txt , :

sac_a_main,sac a main,sacs a main

index .

query sac_a_main.

sac à main sac_a_main, sac .

+2

schema.xml , OR. , ( AND).

, "", :

: "" < ( ), ( , )
: ( ) < < , , ( , )

0

All Articles