1

我试图让主索引sql_query_killlist工作,但无论我做什么,删除的文档仍然出现是SphinxQL结果。我的狮身人面像版本是2.0.4

sphinx.conf文件的一部分:

source torrents
{
    type        = mysql

    sql_host        = localhost
    sql_user        = torrents
    sql_pass        = torrents
    sql_db      = torrents
    sql_port        = 3306
    sql_sock        = /var/run/mysqld/mysqld.sock

    sql_query_range     = SELECT MIN(id), MAX(id) FROM torrents
    sql_range_step      = 1000
    sql_query           = \
                            SELECT torrents.id, torrents.id, text_data.torrent, language_id, category, title, words, HEX(torrents.code) as code, sum(trackers_torrents.seeds) as seeds, sum(trackers_torrents.peers) as peers, size, creation_date, rating FROM `text_data` \
                            LEFT JOIN `torrents` ON torrents.id = text_data.torrent \
                            LEFT JOIN `trackers_torrents` ON trackers_torrents.torrent = torrents.id \                            
                            WHERE text_data.torrent >= $start AND text_data.torrent <= $end \
                            AND `trackers_torrents`.status = 'ok' AND `torrents`.is_stopword = 0 \
                            GROUP BY text_data.torrent \
                            ORDER BY text_data.torrent ASC \

    sql_attr_uint   = torrent
    sql_attr_uint       = language_id
    sql_attr_string     = title
    sql_field_string    = words
    sql_attr_string = code
    sql_attr_uint       = seeds
    sql_attr_uint       = peers
    sql_attr_uint   = category
    sql_attr_bigint     = size
    sql_attr_bigint = creation_date
    sql_attr_uint   = rating

    sql_query_pre   = SET NAMES utf8
    sql_query_pre   = SET SESSION query_cache_type=OFF

    sql_query_killlist  = SELECT torrent_id FROM stopwords_torrents
}

这是关键线:

sql_query_killlist  = SELECT torrent_id FROM stopwords_torrents

我的stopwords_torrents表如下所示:

mysql> select * from stopwords_torrents;
+----+------------+
| id | torrent_id |
+----+------------+
|  2 |      14115 |
+----+------------+
1 row in set (0.00 sec)

当你进入SphinxQL

mysql -h 0 -P 9306

输入这个,我仍然得到删除的文件。这是为什么?

mysql> select id, torrent, code from all_torrents WHERE id = 14115;
+-------+--------+---------+------------------------------------------+-------+
| id    | weight | torrent | code                                     | id    |
+-------+--------+---------+------------------------------------------+-------+
| 14115 |      1 |   14115 | 4956A4E976EA948025C3C3554567CA2820F65F64 | 14115 |
+-------+--------+---------+------------------------------------------+-------+
1 row in set (0.00 sec)
4

1 回答 1

2

索引上的 kill-list 会从 PREVIOUS 索引中删除文档。不是当前索引。

它用于查询多个索引时。搜索一个索引时没有效果。

如果要从结果中删除文档,只需修改sql_query为直接排除它们即可。

于 2014-04-22T15:10:12.683 回答