思考Sphinx将声明指向为符号

时间:2015-12-07 05:51:03

标签: ruby-on-rails postgresql sphinx thinking-sphinx

我使用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的索引只是侥幸?

谢谢, 马丁

1 个答案:

答案 0 :(得分:1)

理论上,索引调用的符号版本(indexes :short_description)和方法版本(indexes short_description)之间没有区别。符号版本最初构建在Thinking Sphinx中,作为Ruby Object类(例如id)上现有实例方法的一种解决方法 - 但是从Ruby 1.9开始,BasicObject几乎没有定义实例方法在它上面,所以索引定义可以解释,几乎没有混淆。因此,方法方法 - 其中总是存在于Thinking Sphinx中 - 是我推荐的(以及我在自己的项目中一直使用的方法)。

因此:

  1. 没关系,但我建议使用方法方法。
  2. 鉴于它并不重要,我对指数大小的差异感到非常惊讶(任何差异都很奇怪 - 这种巨大差异尤其令人困惑)。
  3. 在这两种情况下,可能值得检查为索引/源生成的sql_query SQL命令 - 如果它们不同,那么它听起来像Thinking Sphinx中的一个错误