Witajcie

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):

  1. <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
  2. <lst name="spellchecker">
  3. <str name="name">default</str>
  4. <str name="classname">solr.IndexBasedSpellChecker</str>
  5. <str name="field">spellchecker</str>
  6. <str name="spellcheckIndexDir">./spellchecker</str>
  7. <str name="accuracy">0.2</str>
  8. <!--<float name="threshold">0.05</float>-->
  9. <str name="buildOnCommit">true</str>
  10. <float name="thresholdTokenFrequency">.0001</float>
  11. </lst>
  12. <str name="queryAnalyzerFieldType">spellchecker</str>
  13. </searchComponent>
  14.  
  15. <requestHandler name="standard" class="solr.StandardRequestHandler" default="true">
  16. <lst name="defaults">
  17. <str name="spellcheck.dictionary">default</str>
  18. <str name="spellcheck.onlyMorePopular">false</str>
  19. <str name="spellcheck.extendedResults">false</str>
  20. <str name="spellcheck.count">10</str>
  21. </lst>
  22. <arr name="last-components">
  23. <str>spellcheck</str>
  24. </arr>
  25. </requestHandler>



Fragment konfiguracji schema.xml:

  1. <!-- -->
  2. <fieldType name="text_shingle" class="solr.TextField" positionIncrementGap="100">
  3. <analyzer>
  4. <tokenizer class="solr.StandardTokenizerFactory"/>
  5. <filter class="solr.LowerCaseFilterFactory"/>
  6. <filter class="solr.ShingleFilterFactory" maxShingleSize="6" outputUnigrams="true"/>
  7. </analyzer>
  8. </fieldType>
  9. <!-- -->
  10. <fieldType name="spellchecker" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
  11. <analyzer type="index">
  12. <tokenizer class="solr.KeywordTokenizerFactory"/>
  13. <filter class="solr.TrimFilterFactory" />
  14. <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
  15. <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  16. </analyzer>
  17. <analyzer type="query">
  18. <tokenizer class="solr.StandardTokenizerFactory"/>
  19. <filter class="solr.LowerCaseFilterFactory" />
  20. </analyzer>
  21. </fieldType>
  22. <!-- -->
  23. <field name="shop" type="text_shingle" indexed="true" stored="true" required="true"/>
  24. <field name="spellchecker" type="spellchecker" indexed="true" stored="false" multiValued="true"/>
  25. <!-- -->
  26. <copyField source="shop" dest="spellchecker"/>
  27. <!-- -->


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.