Создать документ Lucene из XML - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть документ XML, и я хочу проиндексировать его по индексу Lucene. т.е.

<hello>
  <world>hi</world>
</hello>

Я ожидаю, что в документе есть поле (hello.world:"hi ") (с указанием анализатора)

Я всегда могу разобрать это, но мне было интересно, существует ли какой-либо инструмент для его автоматического создания?

1 Ответ

1 голос
/ 23 февраля 2012

Да, есть «инструмент» (фактически полноценный сервер баз данных), который делает это автоматически: eXist . При правильной настройке это позволяет смешивать полнотекстовые запросы XQuery и Lucene, например

for $hit in collection("/db/my-stuff")//hello/world[ft:query("hi")]
  order by ft:score($hit)  (:uses Lucene scoring formula:)
  return $hit

Анализаторы указываются в файле конфигурации коллекции для каждого документа.

Более легкий подход с использованием Apache Digester описан в (старой) статье IBM DeveloperWorks .

РЕДАКТИРОВАТЬ После двух лет работы с eXist я хотел бы добавить, что интеграция с Lucene не идеальна. Для простых запросов это обычно работает нормально, но когда полнотекстовые запросы выполняются в середине сложных запросов XPath, похоже, что оптимизатор запросов запутывается, и вы можете получить либо неверный результат, либо ужасную производительность. Возможно, eXist 2.0 исправил это, YMMV.

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