快速搜索,无标记化

时间:2015-11-18 17:35:57

标签: java mongodb lucene

我正在寻找一种方法来快速全文搜索一百万个1千字节的字符串。

加速这种事情的流行方式(Lucene,或MongoDB中的文本索引)似乎在搜索时将内容字符串拆分为在索引构建时执行的标记中获得高性能。这些令牌基于自然语言词。但是我想避免这种标记化,因为我想搜索与自然语言单词无关的字符串。

我正在寻找类似于SQL“LIKE'%abc%'”的功能,但不仅仅是“abc”。比如说,对于像“a.1”这样的字符串,并且匹配一个文档,例如“.......... a.123 ........”

我得到的印象是理论上,这可以使用suffix trees,但我还没有找到适当的Java实现。 “适当”是指不依赖于一次性加载到内存中的整个后缀树的那个。

这是发明了吗?

1 个答案:

答案 0 :(得分:0)

  

适用"适当"我的意思是并不依赖于一次性加载到内存中的整个后缀树。

据我所知并理解后缀树,无法加载后缀树的一部分并使用它。您可以使用算法来卵圆形,如Aho-Corasick或Boyer-Moore算法,如@fge所述。

实现之一,必须是: https://github.com/abahgat/suffixtree

还有一个好的和简单的算法来在字符串中找到子字符串: Aho–Corasick algorithm 这是在编译器:原理,技术和工具"例如 这个algothm用于防病毒软件,用于搜索病毒db中的病毒签名,以及DNA处理中非常令人印象深刻的病毒签名。