Я недавно настроил solr и haystack для поиска одной из моих моделей django. Я попытался изменить схему solr по умолчанию, созданную haystack, для использования NGramTokenizerFactory
:
<fieldType name="text" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="32" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="32" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
В моей базе данных есть несколько записей из одного или двух слов, которые я бы хотел сопоставить с запросом пользователя. Например, у меня может быть один объект с заголовком «собака», а другой - с заголовком «кошка». Если пользователь ищет «собачью кошку», то я хотел бы вернуть объекты «собака» и «кошка» для этого запроса.
Точно так же, если я ищу «мой крутой сайт», я бы хотел, чтобы поле «сайт» было возвращено.
Я попытался использовать интерфейс администратора solr, чтобы убедиться, что мои запросы совпадают. Там вроде все нормально
:
Проблема в том, что я использую интерфейс поиска по умолчанию в стоге сена для поиска того же запроса:
Как видите, результатов не найдено. Я попытался использовать KeywordFactory и кучу разных конфигураций Solr. Если я не ошибаюсь, запрос должен быть согласованным. Я не уверен, почему стог сена выходит пустым, хотя.
Спасибо за любую помощь / предложения, если это лучший способ выполнить такой поиск.