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

Sphinx search query - condition for numbers in varchar column

我有项目和列表,其中存在类别:

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

对于 Sphinx,我需要搜索例如:bike 并且仅来自类别 5

在列类别中搜索有什么好的方法吗?

在 MySql 我可以写:WHERE name LIKE '%bike%' AND categories LIKE '%5%'

但是我的Sphinx 索引很大,搜索可能无效。有什么方法可以像创建整数 ENUM 列表一样吗?什么是好的解决方案?

谢谢

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) - 效果相同)