从sphinx MVA中选择单个值

时间:2014-08-28 15:28:21

标签: sphinx

由于索引器性能原因,我目前正在使用Sphinx MVA(多值属性),每个MVA只有一个值。我基本上以与sql_joined_field相同的方式使用MVA(我无法使用sql_joined_field,因为您无法按联接的值进行过滤)。

我希望能够按MVA的值排序。根据sphinx文档,您无法实际执行此操作,但是,可以按选定的派生值进行排序。 (例如,MAX(price) AS sort_fieldGROUP_CONCAT(tag) AS sort_field

有没有办法从MVA中选择一个值(或者可能连接MVA中的所有值)?

2 个答案:

答案 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)