У меня проблемы с получением нграмм на работу. Вот мой schema.xml:
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
</analyzer>
</fieldType>
В моей базе данных есть куча записей с
"Элизабет"
и
"Elizabeths"
Когда я пытаюсь запросить «Элизабет», я получаю только «Элизабет», а не «Элизабет».
Странно то, что когда я проверяю solr admin, страница анализа показывает, что EdgenGramFilterFactory действительно доступна, и в результате "Elizabeths" расширяется до
эль эли элиза элизаб элизабет элизабет элизабет
Кажется, что индексатор не понимает этого. У меня та же проблема, когда я перемещаю фильтр синонимов из блока запроса в блок индекса. То есть, когда у меня есть фильтр синонимов в блоке запросов, он работает, но когда я помещаю его в индексный блок, он не действует.
Я перезапустил Sunspot и переиндексировал несколько раз. Нет кости. Есть идеи? Как я могу напрямую проверить список проиндексированных слов?