Вопрос

Я использую поисковую систему Apache Solr для индексации своей базы данных веб -сайтов ..

Я использую django+http://haystacksearch.org/

Итак, допустим, у меня есть документ, в котором есть слово «курица»

Когда я ищу «курицу» - Solr может найти этот документ

Но когда я ищу "цыпочку" - он ничего не находит ..

Есть ли способ исправить это?

Это было полезно?

Решение

Примечание. Следующее решение - Solr 1.4 (и выше) специфический!

Для большей гибкости я бы порекомендовал индексировать ваши данные с NgramtokenizerFactory Чтобы выполнить полные поиски подстановочного знака. Если вы просто хотите искать подстроки в начале или в конце строки, рассмотрите возможность использования EdgengramtokenizerFactory.

Вот снижение замены типа текстового поля, которое будет соответствовать вашей потребности:

<fieldType name="text" class="solr.TextField" >
<analyzer type="index">
    <tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="15" />
    <filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory" />
    <filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

Другие советы

Если вы хотите найти все слова, которые начинаются с Chick, найдите Chick*.

Когда я использовал

<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="15" />

Для поиска подстановочного знака из ответа Брайана, SOL, индексация индексации резко увеличилось. Более 20 раз! Другое решение проблемы поиска подстановочного знака, которую я нашел здесь:

http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/

Вам нужно просто добавить фильтр

<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />

(Tokenizer по умолчанию - Solr.WhitespAcetOkenizerFactory в индексном блоке FieldType). Для меня результат был таким же с меньшими затратами на систему.

Другим подходом, если у вас возникают проблемы с небольшим набором слов, будет использование Solr.SynonyfilterFactory

http://wiki.apache.org/solr/analyzerstokenizerstokenfilters#solr.synonymfilterfactory

Вам просто нужно сохранить простой текстовый файл, который содержит синонимы:

chick peep chicken
dawg hound dog
moggie puss kitten cat

Множество должны позаботиться о себе с другими фильтрами.

Я не изменил никакой конфигурации. Я просто использую звезду впереди и в задней части своего поискового стргинга: * Chicke * (без белого пространства в конце -> это из -за такого форматирующего слова как курсив, если вы используете * в начале и в конце)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top