Nik*_*kis 6 java database search
我有一个基于Java的应用程序和MySQL数据库中的一组关键字(总共约3M关键字,每个关键字可能包含多个单词,例如它可以是:"记忆","老房子","欧盟法律" "等等.
用户通过上载具有任意文本的文档(大多数时间几页)来与应用程序交互.我想要做的是搜索文档中是否以及在哪里显示300万个关键字中的任何一个.
我已经尝试使用循环并在文档中搜索每个关键字,但这根本没有效率.我想知道是否有一个库以更有效的方式执行搜索.
我非常感谢任何帮助.
项目Apache Lucene可能会有所帮助.
Apache LuceneTM是一个完全用Java编写的高性能,功能齐全的文本搜索引擎库.它是一种适用于几乎所有需要全文搜索的应用程序的技术,尤其是跨平台搜索.
你可以在这里找到一些有用的教程
您可以尝试使用布隆过滤器http://en.wikipedia.org/wiki/Bloom_filter。然后根据布隆过滤器检查每个单词以找出积极的结果。请记住,可能存在误报。因此,如果布隆过滤器有积极的结果,那么您可以尝试像“从关键字表中选择关键字,其中关键字在(布隆过滤器的积极结果)”这样的sql查询来具体识别上传的文档中存在哪些关键字。
Guava 库中提供了布隆过滤器的 Java 实现。 http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/hash/BloomFilter.html