Sphinx 斯芬克斯搜索索引

Sphinx 斯芬克斯搜索索引,sphinx,Sphinx,我对Sphinx搜索索引有问题。我一直从中得到空的结果集 source mrc { type = mysql sql_host = localhost sql_user = root sql_pass = sql_db = test_db sql_port = 3306 mysql_connect_flags = 32 sql_query_pre = SET NAMES latin1 sql_query_pr

我对Sphinx搜索索引有问题。我一直从中得到空的结果集

source mrc
{
    type     = mysql
    sql_host = localhost
    sql_user = root
    sql_pass = 
    sql_db   = test_db
    sql_port = 3306
    mysql_connect_flags = 32

    sql_query_pre = SET NAMES latin1
    sql_query_pre = SET SESSION query_cache_type=OFF
    sql_query_pre = REPLACE INTO sphinx.indexer (idx,server,version,lastrun_at) SELECT 'mrc','localhost','2.0.4',UNIX_TIMESTAMP(NOW()) FROM DUAL
    sql_query_post = UPDATE sphinx.indexer SET fetched_by = UNIX_TIMESTAMP(NOW()) WHERE idx = 'mrc' AND server = 'localhost' AND version = '2.0.4'
    sql_query_post_index = UPDATE sphinx.indexer SET indexed_by = UNIX_TIMESTAMP(NOW()) WHERE idx = 'mrc' AND server = 'localhost' AND version = '2.0.4'

    sql_attr_uint = mrc_id
    sql_attr_uint = mrc_parent
    sql_attr_float = mrc_latitude   
    sql_attr_float = mrc_longitude  

    sql_query = \
        SELECT mrc_id AS doc_id, \
        mrc_id, \
        mrc_parent, \
        RADIANS(mrc_latitude) as mrc_latitude, \
        RADIANS(mrc_longitude) as mrc_longitude \
        FROM mrc_table \
        WHERE mrc_parent > 0

    sql_query_info = SELECT * FROM mrc_table WHERE mrc_id = $id

}

index mrc
{
    charset_type = sbcs
    docinfo = extern
    mlock = 1
    morphology = none
    source = mrc
    path = /usr/local/var/data/mrc
}
索引器给了我-

indexing index 'member_region_cities'...
collected 78312 docs, 0.0 MB
total 78312 docs, 0 bytes
total 0.656 sec, 0 bytes/sec, 119354.57 docs/sec
如果我通过mysql连接到searchd并

SELECT * FROM mrc_table;
它返回为空

localhost表中肯定有数据,您可以在索引器显示“collected 78312”的地方看到它

那么为什么斯芬克斯不把数据放进搜索引擎呢


干杯

请仔细检查您的问题。您为名为mrc的索引提供了配置,但索引器输出的内容是成员地区城市,但我相信这只是一个缩写名称

  • 如果searchd已启动并正在运行,请确保您使用--rotate选项运行indexer

  • 您可以使用该索引检查文档id的数量

    ./indextool--dumpheader/usr/local/var/data/mrc.sph | grep total documents

  • 请确保您连接的是Sphinx服务器,而不是MySQL,它通常在端口9306上运行

    mysql-H127.0.0.1-p9306


  • 希望这有帮助,请仔细检查您的问题。您为名为mrc的索引提供了配置,但索引器输出的内容是成员地区城市,但我相信这只是一个缩写名称

  • 如果searchd已启动并正在运行,请确保您使用--rotate选项运行indexer

  • 您可以使用该索引检查文档id的数量

    ./indextool--dumpheader/usr/local/var/data/mrc.sph | grep total documents

  • 请确保您连接的是Sphinx服务器,而不是MySQL,它通常在端口9306上运行

    mysql-H127.0.0.1-p9306


  • 希望这有帮助

    我发现了我的问题,我没有选择任何字段。我将所有列都配置为属性

    我删除了这一行-sql\u attr\u uint=mrc\u id来修复这个问题


    为了便于将来参考,如果您需要一个没有字段的索引,您可以在select查询中设置一个虚拟字段,例如添加-“a”作为虚拟字段。

    我发现了问题,我没有选择任何字段。我将所有列都配置为属性

    我删除了这一行-sql\u attr\u uint=mrc\u id来修复这个问题


    为了将来的参考,如果您需要一个没有字段的索引,您可以在select查询中设置一个虚拟字段,例如添加-'a'作为虚拟字段。

    很好,我在发布之前将索引中的所有成员城市替换为mrc,这就是索引器输出的原因。索引工具输出-文档总数:78312,谢谢你的提示,我不知道indextool,而且肯定连接到了正确的服务器。所以从mrc选择*仍然是空的?你使用哪个Sphinx版本?另外,守护程序错误日志(通常是searchd.log)中有关于旋转的消息吗?很好,在发布之前,我将索引中的所有成员城市替换为mrc,这就是索引器输出的原因。索引工具输出-文档总数:78312,谢谢你的提示,我不知道indextool,而且肯定连接到了正确的服务器。所以从mrc中选择*仍然是空的?你使用哪个Sphinx版本?另外,守护程序错误日志(通常是searchd.log)中是否有关于旋转的消息