全文搜索优化技术

时间:2011-06-28 22:27:08

标签: language-agnostic full-text-search

我有一本300,000多字的书 每个单词都有元数据(语法信息;解析细节和引理[根形式])

构建数据的最佳方法是什么,以便我可以搜索单词或单词组并快速获得结果。我希望能够搜索元数据的要求。

我需要能够搜索精确的短语或只是彼此接近的单词。

我的问题是关于数据库设计和查询方法。

2 个答案:

答案 0 :(得分:2)

在这种情况下,我强烈推荐使用Rabin-Karp算法。虽然Rabin-Karp没有其他搜索算法那么快,但它擅长匹配多个模式,因为你说你将搜索多个短语和词条,这是最合适的。平均值和最佳值都在O(n + m)中,其中n是300,000个单词的组合长度,m是您要搜索的模式的总长度。在最糟糕的情况下,您点击O(mn)时间。

就存储数据而言,您可以使用大型哈希滚动表或更理想的bloom filter

以下是C和ruby中的一些相关问题,文章和实现。希望这会有所帮助。

答案 1 :(得分:1)

一个起点是使用Lucene + Solr设置并索引您拥有的数据。

以下是示例教程:http://lucene.apache.org/solr/tutorial.html