Sphinx搜索查询 - varchar列中数字的条件

时间:2017-05-10 20:29:12

标签: mysql full-text-search sphinx

我有项目和列表,其中包含哪些类别:

id | name       | categories(varchar)
1  | bike red   | 2,5,18
2  | bike black | 4,7,13

使用Sphinx我需要搜索例如:自行车并且只能从类别 5

如何在列类别中进行搜索?

在MySql中我可以写:WHERE name LIKE'%bike%' AND类别LIKE'%5%'

但我的狮身人面像指数很大,搜索可能没有效果。有没有像创建整数ENUM列表或?什么可能是好的解决方案?

由于

1 个答案:

答案 0 :(得分:0)

Sphinx具有多值属性http://sphinxsearch.com/docs/current.html#mva。非常适合这个!

它有点像MySQL中的数字set! (您有多个类别,因此set,而不是enum

它甚至会在索引编制过程中自动解析逗号分隔的数字字符串列表。

sql_query = SELECT id,name,categories FROM item
sql_attr_multi = uint categories from field;

然后是sphinxQL查询...

SELECT * FROM item WHERE MATCH('bike') AND categories=5

(如果熟悉MySQL,这可能会让人感到困惑.MVA属性上的相等过滤器,只是意味着等于其中一个值。如果想要写categories IN (5) - 同样的效果)