我遇到了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;
它返回空。
Theres肯定是localhost表中的数据,你可以看到索引器上写的'收集的78312'
那么为什么Sphinx不会将数据放入searchd?
干杯
答案 0 :(得分:2)
请仔细检查您的问题。您为名为 mrc 的索引提供了配置,但索引器输出显示 member_region_cities ,但我相信它只是缩短了名称。
如果searchd启动并运行,请确保使用 - 旋转 选项运行索引器。
您可以使用
检查索引中的文档数量./ indextool --dumpheader /usr/local/var/data/mrc.sph | grep total-documents
请确保您连接到Sphinx服务器,而不是MySQL,通常是在端口9306上运行
mysql -h 127.0.0.1 -P 9306
希望这有帮助
答案 1 :(得分:2)
我发现了我的问题,我没有选择任何字段。我将所有列都配置为属性。
我通过删除此行来修复此问题 - sql_attr_uint = mrc_id
为了将来参考,如果您需要一个没有字段的索引,您可以设置一个虚拟字段,例如添加 - 'a'作为虚拟 - 添加到选择查询。