中国开发网: 论坛: 程序员情感CBD: 贴子 254051
李战
[技术帖]有谁研究过全文索引的索引结构?就是如何将词或短语与关键字对应的数据结构,比如
从文本中分出一个短语“中国开发网”,怎样来保存这个短语与ID之间的关系。如果考虑用关系数据的表来存,应该怎样存。

估计肯定有两个Word和ID字段,并建立相关索引

方案1 只存一条记录
Word ID
--------------------
中国开发网 ID1

这种情况用Word like '***%'的方法,只能查到“中,中国,中国开,中国开发, 中国开发网”,查不到中间的信息(肯定不能用 like '%***%',因为这不能用到Word字段上的索引)。这种方案估计不行。

方案2 存从后往前的组合纪录
Word ID
--------------------
中国开发网 ID1
国开发网 ID1
开发网 ID1
发网 ID1
发网 ID1
网 ID1

这样,用Word like '***%' 就能查到相关ID。但记录数确增加很多(记录数与短语长度成正比),索引表的空间也将增加很多。

方案2 用HASH值的全组合纪录
CRC(Word) ID
--------------------
CRC(中国开发网) ID1
CRC(中国开发) ID1
CRC(中国开) ID1
CRC(中国) ID1
CRC(中) ID1
CRC(国开发网) ID1
CRC(国开发) ID1
CRC(国开) ID1
CRC(国) ID1
CRC(开发网) ID1
CRC(开发) ID1
CRC(开) ID1
CRC(发网) ID1
CRC(发) ID1
CRC(网) ID1
这种方案,记录数等于从1累加到短语长度的数目,但用了HASH,相对可以加少数据量,对于较长的短语有优势。而在查询时,是把查询的关键字进行相关HASH操作后直接来比较,并非like。直接比较,加上比较较短的HASH值,感觉效率不会太低。

英文的全文检索简单多了,汉语真是伟大的语言啊。

以上仅仅是设想和研究,不限范围,欢迎各位大牛来讨论一哈。
李战(leadzen)

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录