Solr: заполнить отдельные поля от токенизатора - PullRequest
0 голосов
/ 19 июня 2009

Я создал собственный токенизатор в Solr, который ищет именованные объекты. Я хотел бы иметь возможность использовать эту информацию для заполнения отдельных полей в документе lucene / solr.

В качестве примера я хочу заполнить многозначное поле, называемое «местоположения», всеми именами местоположений, которые были извлечены из текста. Для извлечения местоположений текст сначала разбивается на токены, чтобы отделить слова и определить, какие жетоны являются местоположениями. После этого я хотел бы выдать токены для токенизатора, а также заполнить поле «местоположения» всеми именами местоположений, которые были извлечены из текста.

Из проведенного мною исследования нет способа получить доступ к объекту SolrDocument из Tokenizer или TokenizerFactory, поэтому нет способа заполнять поля отсюда.

Решение, которое я до сих пор придумала, заключается в создании пользовательского UpdateRequestProcessorFactory, который обрабатывает текст и извлекает поля, а затем Tokenizer обрабатывает текст снова для получения токенов. Я хотел бы найти способ выполнить эту работу и обработать текст только один раз.

Ответы [ 2 ]

1 голос
/ 04 августа 2009

То, как я это делаю, менее изящно, чем то, по-вашему, стреляют:

Я предварительно обработал документы, используя именованный распознаватель сущностей, и сохранил все сущности в отдельном файле. Затем, когда я публикую в Solr, я просто читаю сущности из этого файла и заполняю поля сущностей (разные для людей, мест и организаций). Это можно было бы упростить, но, поскольку я уже выполнил анализ для другой работы, было проще просто повторно использовать то, что уже существовало.

0 голосов
/ 19 июня 2009

Вот идея, я думаю, сработает в lucene, но я понятия не имею, возможно ли это в solr. Вы можете токенизировать строку вне типичной цепочки токенов, как вы предлагаете, а затем вручную добавить токены в документ, используя параметр NOT_ANALYZED . Вы должны добавить каждый токен отдельно с document.add (...), который lucene будет обрабатывать как одно поле для поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...