У меня возникли трудности с получением новых синонимов для работы с SOLR. Что странно, так это то, что примеры записей в файле sysnonyms.txt, входящем в состав дистрибутива, работают. Ничего нового, что я добавляю, нет.
Например, в файле synonyms.txt был следующий пример:
ГБ, гиб, гигабайт, гигабайт
Затем я запрашиваю тему полевого вызова, используя один из приведенных выше терминов.
тема:gb
тема:гиб
и т.д...
Независимо от того, какой из этих терминов я использую в своем запросе, я получаю тот же результат, что и ожидалось.
Затем я добавил следующую строку в synonyms.txt:
IBM, i.b.m., международная бизнес-машина
И я убедился, что в schema.xml тип поля text_general (тип поля, используемый субъектом поля) включает SynonymFilterFactory для индекса следующим образом:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Наконец, поскольку мои данные находятся в базе данных mysql, я затем повторно импортировал все данные с помощью dataimport, предполагая, что это то, что мне нужно сделать для переиндексации.
Однако, хотя запрос subject:ibm возвращает несколько результатов, запрос subject:i.b.m. ничего не возвращает.
Что я делаю неправильно?