Получить метаданные, связанные с соответствующим содержимым в Solr / Lucene - PullRequest
0 голосов
/ 16 января 2012

У меня большой набор текстовых документов, которые я буду индексировать с помощью Solr, в формате, в котором каждая строка текста имеет связанные метаданные. Например:

#metadata1
A line of text.
#metadata2
Another long, broken line of
#metadata3
text that should be searchable.

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

например. Запрос для «строки текста» вернул бы 2 совпадения, одно из которых является первой строкой (и связанными с ней метаданными «metadata1»), а другое - второй и третьей строками (со связанными «metadata1» и «metadata2» соответственно).

Кто-нибудь может описать, как это можно сделать, или сослаться на учебник, который поможет мне начать?

Ответы [ 2 ]

2 голосов
/ 16 января 2012

Поскольку Solr использует Lucene под обложкой, вам следует начать с модели документа Lucene:

  • указатель - это собрание документов
  • Документ представляет собой последовательность полей.
  • Поле является именованной последовательностью терминов.
  • Термин - это строка.

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

ОБНОВЛЕНИЕ : кажется, что можно искать по нескольким файлам, используя FieldMaskingSpanQuery .

Если вы не хотите выполнять поиск по строкам метаданных, которые выполнимы (вы просто не будете их индексировать). Также включить метаданные в результаты (я думаю, вы хотите сохранить их при индексации и извлекать во время поиска).

1 голос
/ 17 января 2012

Сконфигурируйте ваш fieldType с PatternReplaceCharFilterFactory , который обнаруживает и удаляет метаданные в индексное время и сохраняет поле таким образом, чтобы метаданные возвращались при совпадении.

...