【问题标题】:sphinxsearch gives error with missing attributesphinxsearch 给出缺少属性的错误
【发布时间】:2017-11-27 21:04:44
【问题描述】:

我正在尝试使用连接两个表的查询来创建 sphinxsearch 索引。

到目前为止,索引一直运行良好,但现在我需要索引中的更多数据,因此需要加入另一个表。

查询如下所示

  sql_query = SELECT IFNULL(`pbd`.`main_page`, 1) as `main_page`, \
                        `act`.`id`,  \
                                UNIX_TIMESTAMP(`act`.`date`) as date, \
                                `act`.`post_title`, \
                                `act`.`post_content`,\
                                `act`.`blog_name`, \
                                `act`.`blog_network`,\
                                CASE `act`.`blog_type`\
                                    WHEN 'premium' THEN 0 \
                                    WHEN 'plus' THEN 1 \
                                    WHEN 'basic' THEN 2 \
                                    WHEN '' THEN 2 \
                                ELSE 2 \
                                END as blog_type, \
                                crc32(`act`.`blog_cluster`) as category \
                FROM `wp_bd_activity` act \
                LEFT JOIN `wp_bd_premium_blogs_data` pbd ON act.blog_id = pbd.blog_id \
                where act.blog_id in (select blog_id from wp_blogs where deleted != 1 and public = 1)

当尝试使用此命令旋转索引时:

/usr/bin/indexer activity --rotate

我收到此错误

警告:未找到属性“main_page” - 忽略

这是查询中的第一行。

有什么建议吗?我似乎无法弄清楚问题所在。

mysql是5.5.58版

sphinxsearch 是 2.0.4 版

【问题讨论】:

    标签: mysql sphinx


    【解决方案1】:

    结果集中的第一列始终被视为“文档 ID”。用于文档的唯一 ID。

    ...因为main_page 是第一列,它被假定为id - 因此不再可用作属性(也不能是字段!)

    猜测您的act.id真实唯一ID,所以把它放在第一位

    sql_query = SELECT `act`.`id`,  \
       IFNULL(`pbd`.`main_page`, 1) as `main_page`, \
       UNIX_TIMESTAMP(`act`.`date`) as date, \
    

    other 列的顺序并不重要(除了影响存储在索引中的顺序)——它的组合 sql_attr* 设置等确定列是否是字段和/或属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 2016-06-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-23
      相关资源
      最近更新 更多