Каков наилучший подход для осуществления поиска для поиска документов (PDF, XML, HTML, MS Word)? - PullRequest
1 голос
/ 07 мая 2009

Что может быть хорошим способом кодирования функции поиска для поиска документов в веб-приложении Java?

Подходит ли 'tagged search' для такой функции поиска?

Ответы [ 5 ]

4 голосов
/ 07 мая 2009

Зачем изобретать велосипед?

Выезд Apache Lucene .

Кроме того, выполните поиск по переполнению стека для «полнотекстового поиска», и вы найдете много других очень похожих вопросов. Вот еще один, например: Как реализовать функцию поиска на сайте?

2 голосов
/ 07 мая 2009

Что касается извлечения текстового содержимого документов Office (что необходимо сделать перед передачей в Lucene), существует проект Apache Tika, который поддерживает довольно много форматов файлов , включая Microsoft.

2 голосов
/ 07 мая 2009

Вы можете использовать Solr , который расположен поверх Lucene и представляет собой настоящее приложение для веб-поисковой системы, тогда как Lucene - это библиотека. Однако ни Solr, ни Lucene не анализируют документ Word, PDF и т. Д. Для извлечения метаданных. Необходимо проиндексировать документ на основе предварительно определенной схемы документа.

1 голос
/ 26 апреля 2013

Только для обновления

Существует другая альтернатива вместо Solr, которая называется " ElasticSearch ", это проект с хорошими возможностями, похожий на Solr, но без схемы.

Оба проекта построены на основе Lucene.

1 голос
/ 23 мая 2009

Используя Tika, код для получения текста из файла довольно прост:

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.sax.BodyContentHandler;
import org.apache.tika.parser.Parser;

// exception handling not shown
Parser parser = new AutoDetectParser();
StringWriter textBuffer = new StringWriter();
InputStream input = new FileInputStream(file);
Metadata md = new Metadata();
md.set(Metadata.RESOURCE_NAME_KEY, file.getName());
parser.parse(input, new BodyContentHandler(textBuffer), md);
String text = textBuffer.toString()

Пока что Тика 0.3 работает отлично. Просто добавьте в него любой файл, и он вернет вам то, что имеет смысл для этого формата. Я могу получить текст для индексации всего, что я уже добавил, включая PDF и новые файлы MS Office. Если есть проблемы с некоторыми форматами, я полагаю, что они в основном заключаются в извлечении форматированного текста, а не просто в виде открытого текста.

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