我正在开发一个 android 应用程序,用户需要输入一个字符串/句子作为关键字,并基于该输入,应该从数据库中检索一些字符串。我正在为此寻找合适的算法。我经历了许多答案和许多算法,例如 tfidf 和 Boyer-Moore,但我仍然对选择最有效的算法感到困惑。有人有建议吗?(目的是根据输入的关键字检索一些字符串)
谢谢
我正在开发一个 android 应用程序,用户需要输入一个字符串/句子作为关键字,并基于该输入,应该从数据库中检索一些字符串。我正在为此寻找合适的算法。我经历了许多答案和许多算法,例如 tfidf 和 Boyer-Moore,但我仍然对选择最有效的算法感到困惑。有人有建议吗?(目的是根据输入的关键字检索一些字符串)
谢谢
我写了自动完成搜索(通过短语/子短语),你可以在我的演示中看到性能和字典大小:
http://olegh.ftp.sh/autocomplete.html
这是 Celeron-300 机器,FreeBSD 操作系统。并且在主动搜索期间加载不到 1% 的 CPU。但是,用 C++ 编写,并使用 mmap/pread 系统调用。所以,我不确定它是否可以在 Android 上运行。我可以根据要求分享资源。
关于算法:使用预索引的哈希索引文件,基于字典中短语的所有可能前缀。通过 mmapped hash-table 找到 bucket,它通过 pread 读取到内存中。
索引操作相对较慢:在 PERL 脚本上索引 15,000,000 个字典条目可能会消耗约 1 小时。但是搜索/检索非常快,并且性能不依赖于字典大小。
我不建议编写自己的算法;相反,您应该使用现有的库,例如Apache Lucene。