Должны ли документы в Lucene содержать одинаковые поля? - PullRequest
7 голосов
/ 14 января 2010

Я рассматриваю / работаю над созданием поисковой системы для различных типов контента нашей компании и пытаюсь обернуть голову вокруг Lucene (в частности, .net аромат).

На данный момент мой основной вопрос заключается в том, должны ли документы одного индекса содержать одинаковые поля.

Например:

Document1:

  • Заголовок: "Я - документ, детка"
  • Тело: "Вот некоторые важные вещи"
  • Широта: 26,12224
  • Долгота: -65.23124
  • Бренд: Toshiba

документ2:

  • Заголовок: "Другой документ от меня"
  • Тело: "Lorem ipsum и весь этот джаз"
  • Категория: Статьи
  • Автор: Sir Loin

... и т. Д.

Ответы [ 3 ]

14 голосов
/ 14 января 2010

Ничто в люцене не заставляет единообразия.

Если вы выполняете поиск по полю с именем «fred», и не все документы имеют «fred», этот поиск не найдет документы без fred.

0 голосов
/ 15 января 2010

Все зависит от того, как вы проиндексировали свои документы в Lucene. Все Document s должны быть добавлены в указатель. Вы можете использовать IndexWriter или написать свой собственный класс, чтобы сделать это. Перед добавлением документа в указатель вы должны разбить его на пары «имя-значение». Впоследствии вы можете запросить Lucene для этих значений имени, используя QueryParser. Например, следующий запрос вернет все документы с фразами «Я документ, детка» в заголовке и «Вот некоторые важные вещи» в теле.

title:("I'm a document, baby") body:("Here are some important things")

Я только что показал простой пример, но вы можете создать более мощный поисковый запрос разными способами.

Классы, которые я упомянул, взяты из Java, но .net должен быть похожим.

0 голосов
/ 14 января 2010

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

...