Поиск подполя в Solr по сложному типу данных, который требует multiValued = true - PullRequest
0 голосов
/ 08 сентября 2011

Я создаю решение, которое имеет основной LuceneDocument типа "Артефакт".

В артефакте мы извлекаем сложные типы данных для дальнейшей классификации и организации данных. В рамках нашей индексации Solr наша цель - позволить пользователям выполнять поисковые запросы по всему тексту артефакта, а также по этим сложным типам данных.

Пример текста:

"Молодой человек по имени Джон Доу перепрыгнул через ленивую собаку, а затем пообедал на бул. Индиана, 123, Питтсбург, Пенсильвания, 15235 с коричневой лисой. Через некоторое время коричневая лиса полетела навестить Президента в 1600 году в Пенсильвании Ave, Washington, DC 20500 "

Наш процесс извлечения извлечет три полезных объекта:

  1. Персона - Джон Доу
  2. Адрес - бул. Индиана, 123, Питсбург, Пенсильвания 15235
  3. Адрес - 1600 Pennsylvania Ave, Washington, DC 20500

Нам нужно еще раз разложить # 2 & # 3 в

  • streetAddressOne
  • город
  • состояние
  • 1028 * ZipCode *

Во время публикации Solr мы создадим индексируемый объект (используя Solr4J) со следующими полями:

@Field
String artifactBody;

@Field
List<String> streetAddressOne;

@Field
List<String> city;

@Field
List<String> state;

@Field
List<String> zipCode;

@Field
List<String> person;

Все идет хорошо, и мы публикуем эти записи в Solr без проблем.

По запросу пользователя "streetAddressOne: Indiana AND city: Washington" мы получим ложный положительный результат. Теперь реальность такова, что в Вашингтоне, округ Колумбия, действительно есть Индиана-авеню, поэтому поиск является правильным адресом.

Это общее описание нашего варианта использования, и я спрашиваю о некоторых альтернативных подходах, которые гарантируют, что этот ложный положительный результат не возвращается, но сопоставление для сложных типов все еще доступно.

Я начал с типа PolyField, но, похоже, он не применяется, когда вы хотите найти подмножество всех полей в наборе.

Я также исследую путь превращения Address в элемент LuceneDocument, который публикуется в Solr. Проблема заключается в том, что набор результатов должен отражать список артефактов, а не список адресов. Эта возможность «подобного соединению» просто недоступна в поисковой системе, поэтому я отошел от этой идеи.

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