2016-12-06 6 views
0

Я привязываю к использованию solr для своего poc, и я поражен приведенной ниже проблемой и не могу найти решение.Индексирование подслов URL-адреса в Solr

Любая помощь будет очень признана. !!

Ниже приведены четыре случая я пытаюсь достичь: URL-адреса: 1.www.abc.com 2.www.abcdef.com 3.www.123.com/abc 4.www.123 .com/abcdef

Я использую стандартный токенизатор для индексации URL-адресов, разделяющих слова, как показано ниже, и индекса. 1.www.abc.com 2.www.abcdef.com 3.www.123.com и а 4.www.123.com и ABCDEF

Когда я искать аЬс я хотел бы получить только 3-й URL-адрес в качестве результата поиска.

Но я хочу получить все четыре URL-адреса при поиске по ключевому слову abc.

Kinldy предложить.

Спасибо.

ответ

0

При поиске со строкой «abc» все документы с маркером «abc» извлекаются в результате. поэтому abc будет соответствовать только abc.

соответствовать ABCDE или абвг .. и т.д., чтобы соответствовать с помощью запроса «а», вы должны индексировать документ с использованием н-г

Читайте о Пограничных N-грамм.

Добавить фильтр ниже в вашем файле схемы для анализатора поля type = "index" в поле определения typr.

<filter class="solr.EdgeNGramFilterFactory" maxGramSize="20" minGramSize="2"/> 

Пример: имя поля = "ABCDE"

EdgeNGramFilterFactory будет генерировать маркеры, такие как AB, BC, CD, DE, ABC, BCD, CDE, ABCD, BCDE, ABCDE,

+0

Спасибо за ваш ответ винод. Я думаю, что использование NGram является хорошим, если у нас есть имя поля нескольких символов и генерация токенов. Но в моем случае поле - это URL-адрес, длина которого может быть очень длинной, и поэтому я предполагаю, что в этом случае он создает огромное количество токенов. !! как вы думаете .. – user3257510

+0

Правильно, он генерирует больше токенов. поэтому увеличится и размер индекса, и время индексирования. Другим способом, использующим solr. – vinod