2013-03-18 182 views
1

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

感谢

+0

如果问题不清楚,请告诉我! – 2013-03-18 09:07:30

回答

-1

我写的自动完成搜索(由短语/ subphrases),你可以看到我的演示 性能和字典大小:

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

这是Celeron-300机器,FreeBSD操作系统。在主动搜索期间loadin小于1%的CPU。但是,用C++编写,并使用mmap/pread系统调用。所以,我不确定,它会在Android上运行。我可以根据要求分享资源。

关于算法:使用preindexed散列索引文件, 基于词典中所有可能的词组前缀。 通过mmapped哈希表找到的存储桶,通过pread获取到内存中。

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

0

我不会推荐写你自己的算法;相反,你应该使用现有的库,如Apache Lucene