我使用Thinking Sphinx 3,Sphinx 2,Rails 4和PostgreSQL 9索引大约200M行和10列数据,我生成的索引数据大约为250GB,或者每1M行略多于1GB。
最初,我将索引声明为符号,例如indexes :short_description
,但是当我取出分号并重新索引如下:indexes short_description
时,我的索引数据降至68G ,或每1M行大约340MB。
两个问题:
1)哪个技术正确,符号或字符串(或者它是否重要)?
2)只有68GB,我现在错过了一些数据,还是250GB的索引只是侥幸?
谢谢, 马丁
答案 0 :(得分:1)
理论上,索引调用的符号版本(indexes :short_description
)和方法版本(indexes short_description
)之间没有区别。符号版本最初构建在Thinking Sphinx中,作为Ruby Object
类(例如id
)上现有实例方法的一种解决方法 - 但是从Ruby 1.9开始,BasicObject几乎没有定义实例方法在它上面,所以索引定义可以解释,几乎没有混淆。因此,方法方法 - 其中总是存在于Thinking Sphinx中 - 是我推荐的(以及我在自己的项目中一直使用的方法)。
因此:
在这两种情况下,可能值得检查为索引/源生成的sql_query
SQL命令 - 如果它们不同,那么它听起来像Thinking Sphinx中的一个错误