Dav*_*vid 9 algorithm full-text-search nosql
我有一个庞大的词典:
"word1" => [value1]
"word2" => [value2]
"word3" => [value3, value2]
...
"word400000000" => [value455, value3435, ..., value3423]
Run Code Online (Sandbox Code Playgroud)
单词的数量真的很大.
现在我希望能够非常快速地检索所有values被指出的东西word.word是字符串值.
什么是最好的工具?我想到了简单的数据库解决方案,但DBA的人说它不会真的很快.
所以,在我打开Cormen的书之前,是否有一些现成的解决方案可以解决这个问题?
在 RDMS (YesSQL) 中,您很可能会在所有记录LIKE上使用或=运算符搜索值,即搜索将花费 O(n)。您实际需要的是一种称为倒排索引的数据结构,它允许您在 O(1) 中找到所需值的列表。有关结构和算法的描述,请参阅维基百科文章,有关即用型工具的信息,请继续阅读。
在Lucene / Solr、Sphinx (顺便说一下,它支持多个数据库作为数据源)等搜索引擎以及Berkeley DB或Apache Cassandra等一些键值存储中,有大量倒排索引的实现。搜索引擎和键值存储之间的区别在于:
另请注意,倒排索引的结构非常简单,因此如果前面的选项都不适合您,您可以轻松地自己实现它。