由于索引器性能原因,我目前正在使用Sphinx MVA(多值属性),每个MVA只有一个值。我基本上以与sql_joined_field
相同的方式使用MVA(我无法使用sql_joined_field
,因为您无法按联接的值进行过滤)。
我希望能够按MVA的值排序。根据sphinx文档,您无法实际执行此操作,但是,可以按选定的派生值进行排序。 (例如,MAX(price) AS sort_field
或GROUP_CONCAT(tag) AS sort_field
)
有没有办法从MVA中选择一个值(或者可能连接MVA中的所有值)?
答案 0 :(得分:1)
好的,当出现时,您可以按MVA排序,
sphinxQL>select id,bucket_id from gi_stemmed where match('bridge') order by bucket_id desc;
+---------+-----------+
| id | bucket_id |
+---------+-----------+
| 4135611 | 492 |
| 4135609 | 492 |
| 4132078 | 492 |
| 4130626 | 492 |
| 4117904 | 492 |
| 4114632 | 490 |
| 4087884 | 490 |
| 4087786 | 490 |
| 4087767 | 490 |
| 4087010 | 490 |
| 4086927 | 490 |
| 4086920 | 490 |
| 4086125 | 490 |
| 4083465 | 761 |
| 4081812 | 491 |
| 4081713 | 490 |
| 4065533 | 490 |
| 4065427 | 490 |
| 4065338 | 490 |
| 4065321 | 490 |
+---------+-----------+
Server version: 2.2.1-dev (r4133)
即没有错误。它不完全有效。有些结果无序(参见上例中的2 / 3rds)
但是有一个GREATEST()
函数,在你的问题中就像MAX一样工作。
sphinxQL>select id,bucket_id,greatest(bucket_id) as two from gi_stemmed where match('bridge road') order by two desc;
答案 1 :(得分:0)
您可以按MVA排序......
sphinxQL>select id,bucket_id from gi_stemmed order by bucket_id desc;
+---------+-----------+
| id | bucket_id |
+---------+-----------+
| 4138739 | 492 |
| 4138708 | 492 |
| 4138671 | 492 |
| 4138663 | 492 |
| 4138661 | 492 |
| 4138615 | 492 |
bucket_id是一个MVA(出于类似的原因)
sphinxQL>describe gi_stemmed like 'bucket_id';
+-----------+------+
| Field | Type |
+-----------+------+
| bucket_id | mva |
+-----------+------+
Server version: 2.2.1-dev (r4133)