【问题标题】:Sphinx search query - condition for numbers in varchar columnSphinx 搜索查询 - varchar 列中数字的条件
【发布时间】:2017-05-10 20:29:11
【问题描述】:

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

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

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

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

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

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

谢谢

【问题讨论】:

    标签: mysql full-text-search sphinx


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 2015-02-24
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多