Mam następujący problem - w jaki sposób połączyć filtrowanie wyników (parametr fq=pole:wartosc) z podpowiedziami zrealizowanymi na bazie solr.SpellCheckComponent ? Chodzi o to, aby zwracane przez Solra podpowiedzi brały pod uwagę nałożony filtr(y) fq.
Konfiguracja solrconfig.xml (tylko część konfiguracyjna spellcheckera):
<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> <lst name="spellchecker"> <str name="name">default</str> <str name="classname">solr.IndexBasedSpellChecker</str> <str name="field">spellchecker</str> <str name="spellcheckIndexDir">./spellchecker</str> <str name="accuracy">0.2</str> <!--<float name="threshold">0.05</float>--> <str name="buildOnCommit">true</str> <float name="thresholdTokenFrequency">.0001</float> </lst> <str name="queryAnalyzerFieldType">spellchecker</str> </searchComponent> <requestHandler name="standard" class="solr.StandardRequestHandler" default="true"> <lst name="defaults"> <str name="spellcheck.dictionary">default</str> <str name="spellcheck.onlyMorePopular">false</str> <str name="spellcheck.extendedResults">false</str> <str name="spellcheck.count">10</str> </lst> <arr name="last-components"> <str>spellcheck</str> </arr> </requestHandler>
Fragment konfiguracji schema.xml:
<!-- --> <fieldType name="text_shingle" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.ShingleFilterFactory" maxShingleSize="6" outputUnigrams="true"/> </analyzer> </fieldType> <!-- --> <fieldType name="spellchecker" class="solr.TextField" positionIncrementGap="100" omitNorms="true"> <analyzer type="index"> <tokenizer class="solr.KeywordTokenizerFactory"/> <filter class="solr.TrimFilterFactory" /> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory" /> </analyzer> </fieldType> <!-- --> <field name="shop" type="text_shingle" indexed="true" stored="true" required="true"/> <field name="spellchecker" type="spellchecker" indexed="true" stored="false" multiValued="true"/> <!-- --> <copyField source="shop" dest="spellchecker"/> <!-- -->
Znalazłem jedynie niepokojące info, że się nie da. Może ktoś spotkał się z takim problemem i go rozwiązał?
//edit
Query, które leci do Solra dla frazy "ob":
http://localhost:8983/solr/de/select/?q=ob...;facet.field=id
//edit2
wszelkie zabawy z parametrami collation również nie dają oczekiwanego rezultatu.