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