Hi

I am indexing the name "FC St. Gallen" using the following type:
    <fieldType name="prefix_token" class="solr.TextField" 
positionIncrementGap="1">
      <analyzer type="index">
        <charFilter class="solr.MappingCharFilterFactory" 
mapping="mapping-ISOLatin1Accent.txt" />
        <tokenizer class="solr.WhitespaceTokenizerFactory" />
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" 
generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" 
splitOnCaseChange="1"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" 
words="stopwords.txt" enablePositionIncrements="true" />
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" 
maxGramSize="20" />
      </analyzer>
      <analyzer type="query">
        <charFilter class="solr.MappingCharFilterFactory" 
mapping="mapping-ISOLatin1Accent.txt" />
        <tokenizer class="solr.WhitespaceTokenizerFactory" />
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" 
generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" 
splitOnCaseChange="1"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" 
words="stopwords.txt" enablePositionIncrements="true" />
      </analyzer>
    </fieldType>

Which according to analysis.jsp gets split into:
f | fc | s | st | g | ga | gal | gall | galle | gallen

So far so good.

Now if I search for "fc st.gallen" according to analysis.jsp it will search for:
fc | st | gallen

But when I do a dismax search using the following handler:
  <requestHandler name="auto" class="solr.SearchHandler" default="true">
    <lst name="defaults">
     <str name="defType">dismax</str>
     <str name="echoParams">explicit</str>
     <int name="rows">10</int>
     <str name="qf">name firstname email^0.5 telefon^0.5 city^0.6 
street^0.6</str>
     <str name="fl">id,type,name,firstname,zipcode,city,street,urlizedname</str>
    </lst>
  </requestHandler>

I do not get a match.
Looking at the debug of the query I can see that its actually splitting the 
query into "fc" and "st gallen":
<str name="rawquerystring">fc st.gallen</str>
<str name="querystring">fc st.gallen</str>
<str name="parsedquery">
+((DisjunctionMaxQuery((telefon:fc^0.5 | firstname:fc | email:fc^0.5 | 
street:fc^0.6 | city:fc^0.6 | name:fc)) DisjunctionMaxQuery((telefon:"st 
gallen"^0.5 | firstname:"st gallen" | email:"st gallen"^0.5 | street:"st 
gallen"^0.6 | city:"st gallen"^0.6 | name:"st gallen")))~2) ()
</str>
<str name="parsedquery_toString">
+(((telefon:fc^0.5 | firstname:fc | email:fc^0.5 | street:fc^0.6 | city:fc^0.6 
| name:fc) (telefon:"st gallen"^0.5 | firstname:"st gallen" | email:"st 
gallen"^0.5 | street:"st gallen"^0.6 | city:"st gallen"^0.6 | name:"st 
gallen"))~2) ()
</str>

Whats going on there?

regards,
Lukas Kahwe Smith
m...@pooteeweet.org



Reply via email to