Как индексировать документы Word 2003, 2007 и 2010 с помощью Lucene.NET

Я пишу собственный индексатор Lucene.NET, чтобы включить индексирование документов MS Word. Индексатор должен поддерживать работу с тремя последними выпусками MS Word: 2010, 2007 и 2003.

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

Есть ли лучший способ реализовать индексацию документов Word? Означает ли это, что мне придется установить на сервер все три версии Word? Или просто Word 2010?

Инструменты / Окружающая среда:

  • Lucene.NET 2.3.1.3
  • VS2010 / .NET 3.5
  • Windows 2008 / IIS 7

Примечание. Подробнее о том, как это реализовать, см. в Текстовый поиск Sitecore в документах PDF или Word


person Arnold Zokas    schedule 25.10.2010    source источник


Ответы (1)


Вы можете использовать плагины IFilter, чтобы получать содержимое документов и затем индексировать их. Интерфейс изначально является частью Microsoft Index Service, но обычно доступен для индексирования документов.

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

Подробнее о технологии IFilter см. IFilter в Википедии и IFilter в MSDN. Вам нужно будет заглянуть в P / Invoke, и вы можете почерпнуть вдохновение IFilter на сайте pinvoke.net.

Образец на C # можно найти в галерее кода MSDN .

person HakonB    schedule 30.10.2010