Часть поиска Apache Solr слова

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

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

Так скажем, у меня есть документ, которые имеют слово "Chicken"

То, когда я ищу "курицу" - solr, может найти этот документ

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

Существует ли способ зафиксировать это?

22
задан Mauricio Scheffer 24 March 2010 в 17:25
поделиться

3 ответа

Примечание: Следующее решение специфично для Solr 1.4 (и выше) !

Для большей гибкости я бы рекомендовал индексировать Ваши данные с помощью NGramTokenizerFactory для выполнения полного поиска с использованием спереди и сзади wildcard. Если Вы хотите просто искать подстроки в начале или в конце строки, подумайте об использовании 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>
18
ответ дан 29 November 2019 в 05:18
поделиться

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

.
7
ответ дан 29 November 2019 в 05:18
поделиться

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

http://wiki.apache.org/solr/analyzersticoStokens # Solr.synonymfilterfactory

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

chick peep chicken
dawg hound dog
moggie puss kitten cat

Syrurals следует позаботиться о себе с другими фильтрами.

1
ответ дан 29 November 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: