我有一本300,000多字的书 每个单词都有元数据(语法信息;解析细节和引理[根形式])
构建数据的最佳方法是什么,以便我可以搜索单词或单词组并快速获得结果。我希望能够搜索元数据的要求。
我需要能够搜索精确的短语或只是彼此接近的单词。
我的问题是关于数据库设计和查询方法。
答案 0 :(得分:2)
在这种情况下,我强烈推荐使用Rabin-Karp算法。虽然Rabin-Karp没有其他搜索算法那么快,但它擅长匹配多个模式,因为你说你将搜索多个短语和词条,这是最合适的。平均值和最佳值都在O(n + m)
中,其中n是300,000个单词的组合长度,m是您要搜索的模式的总长度。在最糟糕的情况下,您点击O(mn)
时间。
就存储数据而言,您可以使用大型哈希滚动表或更理想的bloom filter。
以下是C和ruby中的一些相关问题,文章和实现。希望这会有所帮助。
答案 1 :(得分:1)
一个起点是使用Lucene + Solr设置并索引您拥有的数据。