2015-08-23 3 views
0

Мне нужно найти решение для индексации моей базы документов в словаре. Этот словарь содержит 3 миллиона фраз. У меня есть одна большая проблема: Мне нужно индексировать базу документов на этом словаре только с учетом того, что перестановка слов также принимается.
Например: У меня есть фраза в моем словаре как «красивый большой сад», но если документ содержит «большой красивый сад», он должен быть индексом как «красивый большой сад». Я много думаю, но я не мог найти нормальное решение в пределах solr, за исключением использования фильтра синонимов и перестановки слов, например, ниже: красивый большой сад => сад большой красивый, красивый сад большой, большой красивый сад, ... , но это невозможно, потому что мой словарь содержит 3 миллиона фраз, и многие из этих фраз имеют более 5 слов, поэтому вычисление 5! и сделать фильтр синонима невозможно. Есть ли кто-нибудь, кто может помочь мне с правильной идеей, я новичок в solr, для этого должен быть способ.Как индексировать документ с несколькими словами (фразами) и перестановкой слов?

Заранее спасибо Afrooz

ответ

0

Всегда сортировать фразы в алфавитном порядке, как в словаре, и при поиске потенциальных партнеров. Таким образом вам нужно только проверить одну перестановку.

+0

Спасибо, но как я могу изменить порядок текста в документах, рассмотреть я даю документ 500 слов, который является история и движок должны индексировать этот документ в базе solr на этом словаре, Ok, мы можем сказать, что словарь отсортирован по алфавиту, но порядок слов в документе является вопросом для solr, я не могу отслеживать, где находится местоположение этого словаря термины внутри документа, и именно поэтому я использую solr, чтобы узнать и проиндексировать его для меня. – Afrooz

+0

Вы можете использовать solr для индексации отдельных слов, а затем у нас есть плагин, чтобы проверить слова вокруг него на ваш словарь. – stark

0

Простым решением является изменение операции по умолчанию в solr на AND. Вы можете указать то же самое в запросе, что и в обработчике запросов.

Использование в запросе:

q.op=AND 

Обновление в поисковом обработчиком:

<requestHandler name="/select_and" class="solr.SearchHandler"> 
    <lst name="defaults"> 
    <str name="q.op">AND</str> 

Alternate way to solve it: Вы можете разделить входной текст на лексемы пробелами, а затем сформировать запрос, используя каждый член с AND оператором. Например:

input text: beautiful big garden 
search query: q=field:beautiful AND field:big AND field:garden 

Index Ваши данные со следующими FieldType:

<fieldType name="text_general" class="solr.TextField"> 
    <analyzer> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 
+0

abhishek Спасибо, но я не знаю этих слов в моем документе. У меня есть документ объемом от 500 до 700 слов, и я хочу аннотировать этот документ в соответствии со словарем, поэтому, если я использую «и» для всех слов документа, то механизм ничего не получит. – Afrooz

+0

Это тот случай, когда вы индексируете документ (500 слов), но ищете по фразе и является частью файла phrase.txt? Не могли бы вы подробнее рассказать о своем вопросе. – YoungHobbit

Смежные вопросы