2009-06-18 5 views
0

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

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

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

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

ответ

1

Как я сделать это менее изящна, что он выглядит, как вы снимаете для:

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

0

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

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