Полные остановки в заголовке недоступны для поиска в SOLR.

У меня есть довольно простая реализация поиска SOLR с использованием DataImportHandler. Одним из полей является название компании. Он создает поле для поиска с названием компании как его частью, а также описанием.

Дело в том, что поиск компании под названием C.E.D. не найдет. Я знаю, что это там. Более общий поиск возвращает результат.

Забавно, что в индексе также есть компания под названием CED. Поиск C.E.D. не возвращает эту компанию, но поиск CED делает. Однако поиск CED не возвращает компанию CED.

Когда я пишу это, я понимаю, что мне, вероятно, нужно изменить поле названия компании, чтобы оно использовалось как есть, и никакие фильтры не путались с фактической комбинацией слов или пунктуацией?


person hayres    schedule 29.05.2013    source источник
comment
Пожалуйста, предоставьте подробную информацию для вашего типа поля? какой анализ вы выполняете во время индекса и запроса?   -  person Jayendra    schedule 29.05.2013
comment
Тип поля text_general, но я не думаю, что это имеет значение? Что мне нужно знать, так это тип поля и что с ним делать (анализировать), чтобы оно работало.   -  person hayres    schedule 29.05.2013


Ответы (1)


Вам может подойти обычная конфигурация с WhitespaceTokenizerFactory.
Это создаст токены на пробелах и нижнем регистре текста и будет соответствовать проиндексированным терминам.
C.E.D будет соответствовать C.E.D и c.e.d

<fieldType name="text" class="solr.TextField">
    <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>    
    </analyzer>
</fieldType>

Если вы хотите, чтобы C.E.D, c.e.d or ced соответствовало C.E.D or c.e.d or ced, вам необходимо проверить фильтр WordDelimiterFilterFactory.

person Jayendra    schedule 29.05.2013
comment
да. Сегодня утром я наткнулся на фабрику WordDelimiterFilter. Я попробую и посмотрю, является ли это ответом. Конечно похоже. - person hayres; 29.05.2013