Java中的多关键字搜索
我有一个基于Java的应用程序和MySQL数据库中的一组关键字(总共约300万个关键字,每个关键字可能包含多个单词,例如:“内存”、“旧房子”、“欧盟法律”等) 用户通过上传带有任意文本的文档(大多数情况下是几页)与应用程序进行交互。 我想做的是搜索文档中300万个关键字中的任何一个是否出现以及出现在何处 我尝试过使用循环并在文档中搜索每个关键字,但这根本没有效率。 我想知道是否有一个库以更高效的方式执行搜索Java中的多关键字搜索,java,database,search,Java,Database,Search,我有一个基于Java的应用程序和MySQL数据库中的一组关键字(总共约300万个关键字,每个关键字可能包含多个单词,例如:“内存”、“旧房子”、“欧盟法律”等) 用户通过上传带有任意文本的文档(大多数情况下是几页)与应用程序进行交互。 我想做的是搜索文档中300万个关键字中的任何一个是否出现以及出现在何处 我尝试过使用循环并在文档中搜索每个关键字,但这根本没有效率。 我想知道是否有一个库以更高效的方式执行搜索 非常感谢您的帮助。您可以尝试使用bloom过滤器。然后对照bloom过滤器检查每个单词
非常感谢您的帮助。您可以尝试使用bloom过滤器。然后对照bloom过滤器检查每个单词,以找出积极的方面。请记住可能有误报。因此,如果bloom筛选器中有肯定的内容,那么您可以尝试使用sql查询,如“从关键字表中选择关键字,其中关键字位于(bloom筛选器中的肯定内容)”,以具体确定上载文档中存在哪些关键字 Guava库中提供的bloom过滤器的Java实现。 项目可能会有所帮助 ApacheLuceNet是一个完全用Java编写的高性能、全功能文本搜索引擎库。这项技术几乎适用于任何需要全文搜索的应用程序,尤其是跨平台的应用程序 您可以找到一些有用的教程您也可以在以下网站使用: Lemur项目开发搜索引擎、浏览器工具栏、文本分析工具和数据资源,支持信息检索和文本挖掘软件的研发,包括Indri搜索引擎和ClueWeb09数据集
正如Taher推荐的那样,这是一个很好的工具,我使用了这两个工具,它们都很好。在关键字旁边的列中为每个关键字存储哈希,在阅读文档时检查每个单词,例如
从关键字中选择关键字,其中关键字\u hash=calculateHash(wordToCheck)你需要考虑的是最短路径。进行300万次搜索,或从上传的文档中构建N个短语。一个解决方案是构建一个搜索所有3M关键字的搜索来搜索文档。使用Lucenes关键字高亮显示,并将所有高亮显示的单词与3M关键字匹配;)是否有一种方法可以在荧光笔中相同的文本提取部分中获得多关键字结果?或者更好的是,是否有一种结构可以返回文件中找到的匹配关键字列表?