非整数MVA对的sphinx面搜索


sphinx faceted search on non-integer MVA pairs

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

我有两个表:

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中使用explosion进行处理以返回facet。在狮身人面像我注意到我不能在MVA属性中使用字符串。

有人能指出我在一些方向与我的旧grup_concat的例子请?

不支持字符串的mvc。

字符串属性的支持是四舍五入的,所以它可能有一天还没有得到支持。

需要找出在属性中存储整数的方法。也许可以使用一个唯一的id每个键/值对,这取决于你确切的数据库,这是多么容易。

或者可以使用哈希(例如CRC32)将字符串转换为数字。

或者想办法避免使用MVA。也许可以只是存储在一个完整的字符串属性(即逗号分隔的列表),但也使其成为一个字段,所以可以做过滤通过全文查询。