我有项目和其中存在类别的列表:
id | name | categories(varchar)
1 | bike red | 2,5,18
2 | bike black | 4,7,13
使用 Sphinx,我需要搜索例如:自行车 并且仅从类别 5
有什么好的方法可以在列类别中搜索吗?
在 MySql 中我可以这样写:WHERE name LIKE '%bike%' ANDcategories LIKE '%5%'
但是我的 Sphinx 索引很大,搜索可能无效。有什么办法可以创建整数 ENUM 列表吗?什么是好的解决方案?
谢谢
最佳答案
Sphinx 具有多值属性 http://sphinxsearch.com/docs/current.html#mva 。非常适合这个!
它的工作原理有点像 MySQL 中的数字集
! (您有多个类别,因此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 属性上的相等过滤器,实际上仅意味着等于其中一个值。如果需要,可以在 (5) 中写入类别
- 效果相同)
关于mysql - Sphinx 搜索查询 - varchar 列中数字的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43902185/