У меня есть ядро Solr (версия Solr 6.4.1), где я также использую компонент проверки орфографии. Проблема в том, что пока у меня меньше 30 тысяч элементов, моя проверка орфографии работает нормально. Увеличение количества документов до 30 000 и более приводит к тому, что проверка орфографии не возвращает никаких результатов. Мне известны параметры в файле solrconfig.xml, такие как maxQueryFrequency или thresholdTokenFrequency, но их изменение не решило проблему.
Я также прочитал это: Apache Solr: поиск не возвращает результат для проиндексированного большого документа, Проверка орфографии Solr не возвращает никаких результатов, предложение Solr не возвращает никаких результатов и Проверка орфографии Solr работает случайным образом, но они тоже не помогли.
Вот соответствующие части файла solrconfig.xml:
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">text_general</str>
<lst name="spellchecker">
<str name="name">default</str>
<str name="field">_spellcheck_</str>
<str name="classname">solr.DirectSolrSpellChecker</str>
<str name="distanceMeasure">internal</str>
<float name="accuracy">0.5</float>
<int name="maxEdits">2</int>
<int name="minPrefix">1</int>
<int name="maxInspections">5</int>
<int name="minQueryLength">4</int>
<float name="maxQueryFrequency">0.1</float>
<float name="thresholdTokenFrequency">.0000001</float>
</lst>
</searchComponent>
и в моем обработчике запросов:
<bool name="spellcheck">true</bool>
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck.extendedResults">false</str>
<str name="spellcheck.count">5</str>
<str name="spellcheck.alternativeTermCount">2</str>
<str name="spellcheck.maxResultsForSuggest">5</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">true</str>
<str name="spellcheck.maxCollationTries">5</str>
<str name="spellcheck.maxCollations">3</str>
_spellcheck_ — это поле CopyField (source="*"), проиндексированное как text_general, которое определяется как:
<fieldType name="text_general" class="solr.TextField" >
<analyzer type="index">
<charFilter class="solr.HTMLStripCharFilterFactory" />
<tokenizer class="solr.ClassicTokenizerFactory" />
<filter class="solr.ClassicFilterFactory" />
<filter class="solr.ASCIIFoldingFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.TrimFilterFactory" />
<filter class="solr.HyphenatedWordsFilterFactory" />
</analyzer>
<analyzer type="query">
<charFilter class="solr.HTMLStripCharFilterFactory" />
<tokenizer class="solr.ClassicTokenizerFactory" />
<filter class="solr.ClassicFilterFactory" />
<filter class="solr.ASCIIFoldingFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.TrimFilterFactory" />
<filter class="solr.HyphenatedWordsFilterFactory" />
</analyzer>
</fieldType>
Любой совет?