文本索引算法

我正在为归档系统编写一个C#winform应用程序。 该系统有一个庞大的数据库,其中一些表有超过150万条记录。 我需要的是一种索引这些记录内容的算法。 主要是,文件是Microsoft office,PDF和TXT文件。 谁有人可以帮忙? 无论是想法,链接,书籍还是代码,我都很感激:)

例如:如果我在数据库中的某个文件夹中搜索“国际”这个词,我会得到包含该词的所有文件按照某个标准排序,例如相关性,修改日期……等等

你需要创建一个所谓的倒排索引 – 这是搜索引擎工作的核心(谷歌)。 Apache Lucene可以说是倒排索引的最佳库。 你有2个选择:

  1. Lucene.net – Java Lucene库的.NET端口。

  2. Apache Solr – 一个使用Lucene库构建的完整搜索服务器,可以轻松集成到.NET应用程序中,因为它具有RESTful API。 具有多种function,如缓存,缩放,拼写检查等,开箱即用。您可以使用优秀的SolrNet库让您的app-to-Solr交互更轻松。

  3. Apache Tika提供了一个非常广泛的数据/元数据提取工具包,可以处理PDF,HTML,MS Office文档等。一个更简单的选择是IFilter API。 有关详细信息,请参阅此文章。

看起来你需要两件事。 首先,您需要一个实际执行索引的系统。 为此,你可以像Mikos提到的那样使用Lucene或Apache Solr。 您也可以查看另一个全文搜索引擎Sphinx 。 您还可以使用数据库中内置的全文function。 SQL Server和MySQL都具有全文索引function。 和许多其他数据库一样。 您需要的第二件事是从文件中获取文本的方法。 对于像txt文件和HTML文件这样的东西,这很容易,因为大多数全文搜索引擎会将它们作为常规文本接受。 对于更复杂的二进制文档,如MS Word或PDF,您必须找到另一种方法来获取文本。

根据我的说法,执行一个表分区,使用id’s索引表,然后执行搜索。