1

我想创建一个大约 10 6 个术语的大倒排索引。你会建议什么方法?我正在考虑使用快速二进制密钥存储数据库,如 Tokyo cabinet、voldemort 等。编辑:我过去曾尝试使用 MySQL 存储一个包含两个整数的表来表示倒排索引,但即使第一列有一个 db索引,查询很慢。我认为对于这些情况,SQL 数据库有太多开销、事务开销、查询解析等。我正在寻找哪些技术或算法方法可以扩展,同时具有良好的响应时间和性能。出于研究目的,我正在推出自己的解决方案。

4

3 回答 3

3

这个问题有点模糊,所以我认为我能给出的唯一答案是:在 PostgreSQL 中使用“广义倒排索引”(GIN 索引)来创建你想要的任何类型的倒排索引。所有艰苦的工作都为您完成:它使用预写日志来确保崩溃安全,内部使用 btree 结构来提高性能,并且它是成熟数据库管理系统的一部分。

如果您的问题是全文搜索,那么 postgresql 的全文搜索已经为您构建好了,并且可以在内部使用 GIN。

于 2009-10-15T16:48:52.077 回答
0

这很酷,你试图自己动手。也许研究 Lucene 的倒排索引文件格式? http://lucene.apache.org/java/3_1_0/fileformats.html

于 2011-04-19T14:05:59.460 回答
0

是的,绝对考虑将Lucene用于索引,因为它基本上是目前最出色的索引器。事实上,我目前正在考虑将它用于索引我的图像数据库。“默认”语言是 Java,但它已被移植到其他语言,例如用于 C++ 的CLucene、用于 python 的PyLucene 。

可以在此处找到快速教程。

于 2011-12-22T06:04:18.780 回答