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

标签 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%' 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/

相关文章:

mysql - 左表中每行有 1 个结果的左连接 - 不带 GROUP BY

php - sphinx表在其他基础上查表

php - Sphinx,如何确定更新索引的方式?

java - 在 Android 中的 List<String> 中快速搜索的方法

php - Sphinx 和 PHP 的一些问题

Php - 变量名中的变量

mysql - 简单的SQL查询问题

mysql使用自动增量ID选择一定范围

ios - 在 iOS 上使用 LLVM 编译时,Sqlite FTS 不起作用

google-app-engine - 有没有办法在应用程序引擎全文搜索中为某些文档字段赋予权重?