【发布时间】:2015-04-02 06:19:52
【问题描述】:
我有一个基于 Java 的应用程序和 MySQL 数据库中的一组关键字(总共大约 300 万个关键字,每个关键字可能包含多个单词,例如可以是:“记忆”、“老房子”、“欧盟法律”等)。
用户通过上传带有任意文本的文档(大多数情况下是几页)与应用程序进行交互。 我要做的是搜索文档中是否以及在何处出现了 300 万个关键字中的任何一个。
我尝试过使用循环并在文档中搜索每个关键字,但这根本没有效率。 我想知道是否有一个库可以以更省时的方式执行搜索。
如果有任何帮助,我将不胜感激。
【问题讨论】:
-
如何在关键字旁边的列中存储每个关键字的哈希值,并在阅读文档期间检查每个单词,例如
select keyword from keywords where keyword_hash = calculateHash(wordToCheck)? -
您需要考虑的是最短路径。进行 300 万次搜索,或从上传的文档中构建 N 个短语。一种解决方案可能是构建所有 3M 关键字的搜索来搜索文档。使用 Lucenes Keyword Highlighter 并将所有突出显示的单词与 3M 关键字匹配;)
-
有没有办法在荧光笔的同一提取文本部分中获得多关键字结果?或者更好的是,是否有一种结构可以返回在文件中找到的匹配关键字列表?