Алгоритм индексации текста - PullRequest
9 голосов
/ 23 декабря 2010

Я пишу C # winform-приложение для системы архивирования. Система имеет огромную базу данных, в которой в некоторых таблицах будет более 1,5 миллионов записей. Что мне нужно, это алгоритм, который индексирует содержание этих записей. В основном это файлы Microsoft Office, PDF и TXT. кто-нибудь может помочь? будь то с идеями, ссылками, книгами или кодами, я ценю это:)

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

Ответы [ 3 ]

9 голосов
/ 23 декабря 2010

Вам необходимо создать так называемый инвертированный индекс, который лежит в основе работы поисковых систем (в стиле Google). Apache Lucene, пожалуй, лучшая библиотека для инвертированной индексации. У вас есть 2 варианта:

  1. Lucene.net - порт .NET библиотеки Java Lucene.

  2. Apache Solr - полноценный поисковый сервер, созданный с использованием библиотек Lucene и легко интегрируемый в ваше приложение .NET, поскольку он имеет RESTful API. Поставляется "из коробки" с несколькими функциями, такими как кеширование, масштабирование, проверка орфографии и т. Д. Вы можете упростить взаимодействие с приложением Solr, используя отличную библиотеку SolrNet .

  3. Apache Tika предлагает очень обширный инструментарий для извлечения данных / метаданных для работы с PDF, HTML, документами MS Office и т. Д. Более простой вариант - API IFilter. См. эту статью для более подробной информации.

1 голос
/ 23 декабря 2010

Похоже, вам нужны две вещи. Во-первых, вам нужна система, которая фактически выполняет индексацию. Для этого вы можете использовать Lucene или Apache Solr, как упоминал Микос. Вы также можете проверить Sphinx , который является еще одним механизмом полнотекстового поиска. Вы также можете использовать полнотекстовые функции, встроенные в вашу базу данных. И SQL Server, и MySQL имеют возможности полнотекстовой индексации. Как и многие другие базы данных. Второе, что вам нужно, это способ получить текст из файлов. Для таких вещей, как текстовые файлы и HTML-файлы, это легко, потому что большинство полнотекстовых поисковых систем примут их как обычный текст. Для более сложных двоичных документов, таких как MS Word или PDF, вам придется найти другой способ получить из них текст.

0 голосов
/ 23 декабря 2010

По моему мнению, выполните разбиение таблицы, проиндексируйте таблицы с помощью идентификаторов и затем выполните поиск.

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