简单分布式索引:预先缓存的0索引

时间:2016-09-23 14:00:48

标签: sphinx

我有两个简单的索引:

首先,01.conf

searchd
{
    listen      = 9301
    listen      = 9401:mysql41
    pid_file    = /var/run/sphinxsearch/searchd01.pid
    log         = /var/log/sphinxsearch/searchd01.log
    query_log   = /var/log/sphinxsearch/query01.log
    binlog_path = /var/lib/sphinxsearch/data/test/01
}

source base
{
    type     = mysql
    sql_host = localhost
    sql_db   = test
    sql_user = root
    sql_pass = toor
    sql_query_pre = SET NAMES utf8
    sql_attr_uint = group_id
}

source test : base
{
    sql_query               = \
                SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \
                FROM documents WHERE id % 2 = 0
}

index test
{
    source = test
    path   = /var/lib/sphinxsearch/data/test/01
}

第二个看起来像第一个但是" 02"相反" 01"在文件名和里面。

并在00.conf中分发索引:

searchd
{
    listen      = 9305
    listen      = 9405:mysql41
    pid_file    = /var/run/sphinxsearch/searchd00.pid
    log         = /var/log/sphinxsearch/searchd00.log
    query_log   = /var/log/sphinxsearch/query00.log
    binlog_path = /var/lib/sphinxsearch/data/test
}

index test
{
    type  = distributed
    agent = 127.0.0.1:9301:test
    agent = 127.0.0.1:9302:test
}

我尝试使用分布式索引:

sudo searchd --config /etc/sphinxsearch/d/00.conf --stop
sudo searchd --config /etc/sphinxsearch/d/01.conf --stop
sudo searchd --config /etc/sphinxsearch/d/02.conf --stop

sudo searchd --config /etc/sphinxsearch/d/01.conf
sudo searchd --config /etc/sphinxsearch/d/02.conf

sudo indexer --all --rotate --config /etc/sphinxsearch/d/01.conf
sudo indexer --all --rotate --config /etc/sphinxsearch/d/02.conf

sudo searchd --config /etc/sphinxsearch/d/00.conf

不幸的是我获得了下一个输出:

...
using config file '/etc/sphinxsearch/d/00.conf'...
listening on all interfaces, port=9305
listening on all interfaces, port=9405
precached 0 indexes in 0.000 sec

为什么?

当我尝试使用分布式索引(9305)搜索某些内容时:

  

没有启用本地索引进行搜索。

如果我将它们分别与端口9301和9302一起使用,那么mysql索引是完美的。但是在分布式索引中搜索不会返回任何内容。

更新

# tail  /var/log/sphinxsearch/searchd00.log
[Thu Sep 29 23:43:04.599 2016] [ 2353] binlog: finished replaying /var/lib/sphinxsearch/data/test/binlog.001; 0.0 MB in 0.000 sec
[Thu Sep 29 23:43:04.599 2016] [ 2353] binlog: finished replaying total 4 in 0.000 sec
[Thu Sep 29 23:43:04.599 2016] [ 2353] accepting connections
[Thu Sep 29 23:43:24.336 2016] [ 2353] caught SIGTERM, shutting down
[Thu Sep 29 23:43:24.472 2016] [ 2353] shutdown complete
[Thu Sep 29 23:43:24.473 2016] [ 2352] watchdog: main process 2353 exited cleanly (exit code 0), shutting down
[Thu Sep 29 23:43:24.634 2016] [ 2404] watchdog: main process 2405 forked ok
[Thu Sep 29 23:43:24.635 2016] [ 2405] listening on all interfaces, port=9305
[Thu Sep 29 23:43:24.635 2016] [ 2405] listening on all interfaces, port=9405
[Thu Sep 29 23:43:24.636 2016] [ 2405] accepting connections

UPDATE2

嗯......从Sphinx查询数据似乎有什么问题。我还将分布式索引重命名为test1。下一个代码效果很好。

# mysql -h 127.0.0.1 -P 9405
mysql> select * from test1 where match ('one|two');
+------+----------+
| id   | group_id |
+------+----------+
|    1 |        1 |
|    2 |        1 |
+------+----------+
2 rows in set (0,00 sec)

我认为旧版sphinxapi.php使用的是什么问题。

1 个答案:

答案 0 :(得分:1)

  

在0.000秒内预先处理0个指数

嗯,这是自我,是正常的。没有本地索引来预先安排'。分布式索引没有索引文件来加载'或(预)缓存。

...但是searchd仍然应该在结束时运行。我认为searchd应该启动好了。

还要检查 /var/log/sphinxsearch/searchd00.log 可能会有更多。

虽然我认为它可能的sphinx不会在没有任何真正的索引的情况下启动(即不能有JUST分布式索引),所以可以只为该配置添加假索引。