sphinx在非整数MVA对上进行分面搜索

时间:2014-05-31 13:17:17

标签: php mysql sphinx

我将我的网站搜索迁移到sphinx,我遇到了一些问题。其中一个是MVA字符串的方面。

我有两张桌子:

TABLE_A
id|col1|col2
1 | rand1 | rand2

TABLE_B
id|idtableA|key|value
1 | 1      | A1 | V1
1 | 1      | A2 | V2

在mysql中,我使用group_concat表B来保持联接。

select 
t1.*, group_concat(concat(t2.key,'-',t2.value) 
from 
TABLE_A t1 left join TABLE_B t2 on t2.idtableA=t1.id 
where t1.id=1 
group by t1.id

这将返回' 1',' rand1',' rand2',' A1-V1,A2-V2' 然后在php中爆炸处理以返回facets。 在sphinx中,我注意到我无法在MVA属性中使用字符串。

有人可以用我的旧grup_concat示例向我指出某个方向吗?

1 个答案:

答案 0 :(得分:1)

不支持字符串的MVA。

字符串属性支持正在四舍五入,因此有朝一日可能尚未得到支持。

需要解决在属性中存储整数的问题。也许可以使用每个键/值对的唯一ID,取决于您的确切数据库,这是多么容易。

或者也许可以使用散列(例如CRC32)将字符串转换为数字。

或者找出一些避免需要MVA的方法。也许可以只存储一个完整的字符串属性(即逗号分隔列表),但也可以将其作为一个字段,因此可以通过全文查询进行过滤。