关键字搜索算法

时间:2013-03-18 09:02:54

标签: algorithm search-engine

我正在开发一个Android应用程序,其中用户需要键入字符串的字符串/句子作为关键字,并且基于该输入,应该从数据库中检索一些字符串。我正在为此目的寻找合适的算法。我已经经历了许多答案和许多算法,如tfidf和Boyer-Moore,但我仍然对选择最有效的算法感到困惑。有人有建议吗? (目的是根据输入的关键字检索一些字符串)

谢谢

2 个答案:

答案 0 :(得分:0)

我不建议编写自己的算法;相反,您应该使用现有的库,例如Apache Lucene

答案 1 :(得分:-1)

我写了自动完成搜索(通过短语/子词),你可以看到 演示中的性能和字典大小:

http://olegh.ftp.sh/autocomplete.html

这是Celeron-300机器,FreeBSD OS。并且在主动搜索期间加载的CPU不到1%。 但是,用C ++编写,并使用mmap / pread系统调用。所以,我不确定,它是否适用于Android。我可以根据要求分享来源。

关于算法:使用预索引的哈希索引文件, 基于来自词典短语的所有可能前缀。 通过mmapped hash-table找到存储桶,它通过pread获取到内存中。

索引相对较慢的操作: 索引15,000,000个字典条目可以在PERL脚本上消耗~1小时。 但搜索/检索非常快,性能不依赖于字典大小。