【问题标题】:Delta Indexing by timestamp in SphinxSphinx中的时间戳增量索引
【发布时间】:2013-04-18 14:30:19
【问题描述】:

我正在尝试使用时间戳字段而不是文档中的示例中的 max_doc_id 来设置 main+delta 索引方案。

source main
{
    sql_query_pre   = \
    REPLACE INTO sph_counter (counter_id, last_update_time) VALUES (1, NOW())

sql_query       = \
    SELECT id, filename, absolute_path, last_update_time \
    FROM files \
    WHERE last_update_time <= ( SELECT last_update_time FROM sph_counter WHERE counter_id=1)
}

source delta
{
sql_query       = \
    SELECT id, filename, absolute_path, last_update_time \
    FROM files \
    WHERE last_update_time > ( SELECT last_update_time FROM sph_counter WHERE counter_id=1)

sql_query_pre   =
}

索引和合并按预期工作,但是main 源的sql_query_pre 永远不会更新sph_counter 表中的last_update_time

我不确定我的问题可能出在哪里。

我通过执行以下操作来运行它:

re-index the delta       (every 30 seconds)

还有:

merge delta into main    (every 10 mins)
re-index the delta       (after merge)

我认为合并将运行 sql_query_pre 以更新 sph_counter last_update_time 是不是错了?

【问题讨论】:

  • 为什么你尝试使用时间戳字段而不是 max_doc_id 来实现索引方案?

标签: mysql indexing sphinx delta-index


【解决方案1】:

我认为合并将运行 sql_query_pre 以更新 sph_counter last_update_time 我错了吗?

是的。在合并期间,Sphinx 不会对索引的“源”运行任何查询。除了获取索引文件的位置之外,它可能甚至没有从配置文件中读取信息。

最简单的方法是让增量索引也使用其 sql_query_pre 更新一个(单独的)计数器。

然后在合并之后,您可以将时间戳从增量记录复制到主记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    相关资源
    最近更新 更多