我将我的网站搜索迁移到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示例向我指出某个方向吗?
答案 0 :(得分:1)
不支持字符串的MVA。
字符串属性支持正在四舍五入,因此有朝一日可能尚未得到支持。
需要解决在属性中存储整数的问题。也许可以使用每个键/值对的唯一ID,取决于您的确切数据库,这是多么容易。
或者也许可以使用散列(例如CRC32)将字符串转换为数字。
或者找出一些避免需要MVA的方法。也许可以只存储一个完整的字符串属性(即逗号分隔列表),但也可以将其作为一个字段,因此可以通过全文查询进行过滤。