2009-10-21 2 views
2

Я использую Lucene.Net для создания веб-сайта для поиска книг, статей и т. Д., Хранящихся в формате PDF. Например, мне нужно иметь возможность фильтровать результаты поиска на основе имени автора. Можно ли это сделать с Луценой? Или мне нужна БД для хранения полей фильтра для каждого документа?Фильтры поиска с Lucene.NET

Также, как лучше всего индексировать мои документы? У меня будет около 50 документов для начала, и периодически мне придется добавить кучу документов в индекс - может быть через веб-форму. Должен ли я использовать БД для хранения путей к документам?

Спасибо.

ответ

2

Вот список того, что вам нужно сделать, IMO:

  1. Извлечение сырой текст из PDF - см this question, который рекомендует iTextSharp для этой цели.
  2. Для каждого документа PDF создайте документ Lucene.net, который имеет несколько полей: автор, название, текст документа и все, что вы хотите искать. Рекомендуется также иметь уникальное поле идентификатора для каждого документа. Я предлагаю вам также сохранить поле с указанием пути к исходному PDF-документу.
  3. После индексирования всех документов у вас будет указатель Lucene, который вы можете искать по полям.
  4. Вы можете добавить новые документы, повторив шаг 2. Это проще сделать в автономном режиме - инкрементные обновления жесткие.
+0

Отличный ответ, спасибо за его упрощение. Значит, вообще нет необходимости в БД? Если я сделаю шаг 2 в автономном режиме и скажу, что я позволяю своим пользователям добавлять документы, поможет ли он отправлять все запросы в БД, а затем у меня может быть отдельный процесс, который индексирует те, которые еще не были проиндексированы, и использовать идентификатор первичного ключа как уникальный идентификатор в индексе? Считаете ли вы, что имеет смысл иметь БД? В случае, если в будущем я решаю, что для каждого документа есть какая-то «связанная информация» или что-то подобное, БД поможет? – Prabhu

+1

Вам понадобится БД, если вам нужны функциональные возможности БД, такие как объединения или сложные выборки. Эта статья: http://www.lucidimagination.com/Community/Hear-from-the-Experts/Articles/Search-Engine-versus-DBMS обращается к вопросу о том, что помещать в базу данных, и что помещать в поиск двигатель. БД может быть подходящим местом для дополнительной информации, которую вам нужно отображать, а не для поиска. –

2

В Lucene есть несколько различных анализаторов, которые могут вычистить шум и сделать «стебель», что полезно, когда вы хотите выполнять полнотекстовый поиск, но вам все равно нужно будет хранить PDF-файл где-нибудь. Lucene.Net с удовольствием создает индекс в файловой системе, и вы можете добавить поле в документ, который он создает, называется «PATH» с указанием пути к документу.

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