初学者:关于 Sphinx 和 SphinxQL
Beginner: about Sphinx & SphinxQL
我已经设法配置、索引和 运行 sphinx,现在我正在使用 SphinxQL 检索一些数据。
问题是,当我尝试查询时,结果只给我 "id"。
这让我很困惑。
我在 mySQL 上的数据由以下列组成
GENDB_ID //auto increment
GENDB_PDO //product origin, string
GENDB_FPN //family part number, string
GENDB_PN //part number, string
问题:
为什么 Sphinx 在我的 "GENDB_ID" 上设置别名 "id"?
当我尝试指定要在查询中获取的列时,出现 "column does not exists" 错误。如何查询某些列?
什么是转运?我的 rt 索引总是被跳过。
这是我的 sphinx 配置:
#
# Minimal Sphinx configuration sample (clean, simple, functional)
#
source src1
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = 1234
sql_db = sample
sql_port = 3306 # optional, default is 3306
sql_query = \
SELECT * \
FROM general
}
index test1
{
source = src1
path = C:/Sphinx/data/test1
min_infix_len = 3
}
index testrt //This one doesnt work I don't know why.
{
type = rt
rt_mem_limit = 128M
path = C:/Sphinx/data/testrt
rt_field = GENDB_PDO
}
indexer
{
mem_limit = 500M
}
searchd
{
listen = 9312
listen = 9306:mysql41
log = C:/Sphinx/log/searchd.log
query_log = C:/Sphinx/log/query.log
read_timeout = 5
max_children = 30
pid_file = C:/Sphinx/log/searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = 2
binlog_path = C:/Sphinx/data
max_matches = 10000000
}
Sphinx 总是调用文档 ID 'id'。它不是真正的属性,文档 ID 很重要,因此会与索引中的任何字段或属性分开处理。
您只能 'retrieve' 属性。只有属性存储在索引中并且可以按原样使用。 FIELDs 被标记化和索引,因此匹配全文查询。但未存储原始文本。
(从您的 sql_query 中检索的列会自动成为 FIELDS,除非您将它们专门配置为 ATTRIBUTES - 除了第一列,如前所述,它是特殊的)
http://sphinxsearch.com/docs/current.html#fields
http://sphinxsearch.com/docs/current.html#attributes
您可以选择,或者将它们添加为属性(可能使用 sql_field_string,因此属性和字段)。或者接受您无法从 sphinx 获取它们,并将原始数据返回到您的 mysql 数据库。
(第二部分,查询某些FIELDS,见'@'语法:http://sphinxsearch.com/docs/current.html#extended-syntax)
http://sphinxsearch.com/docs/current.html#rt-indexes 实时索引。一种非常不同类型的索引。
我已经设法配置、索引和 运行 sphinx,现在我正在使用 SphinxQL 检索一些数据。
问题是,当我尝试查询时,结果只给我 "id"。 这让我很困惑。 我在 mySQL 上的数据由以下列组成
GENDB_ID //auto increment
GENDB_PDO //product origin, string
GENDB_FPN //family part number, string
GENDB_PN //part number, string
问题:
为什么 Sphinx 在我的 "GENDB_ID" 上设置别名 "id"?
当我尝试指定要在查询中获取的列时,出现 "column does not exists" 错误。如何查询某些列?
什么是转运?我的 rt 索引总是被跳过。
这是我的 sphinx 配置:
#
# Minimal Sphinx configuration sample (clean, simple, functional)
#
source src1
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = 1234
sql_db = sample
sql_port = 3306 # optional, default is 3306
sql_query = \
SELECT * \
FROM general
}
index test1
{
source = src1
path = C:/Sphinx/data/test1
min_infix_len = 3
}
index testrt //This one doesnt work I don't know why.
{
type = rt
rt_mem_limit = 128M
path = C:/Sphinx/data/testrt
rt_field = GENDB_PDO
}
indexer
{
mem_limit = 500M
}
searchd
{
listen = 9312
listen = 9306:mysql41
log = C:/Sphinx/log/searchd.log
query_log = C:/Sphinx/log/query.log
read_timeout = 5
max_children = 30
pid_file = C:/Sphinx/log/searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = 2
binlog_path = C:/Sphinx/data
max_matches = 10000000
}
Sphinx 总是调用文档 ID 'id'。它不是真正的属性,文档 ID 很重要,因此会与索引中的任何字段或属性分开处理。
您只能 'retrieve' 属性。只有属性存储在索引中并且可以按原样使用。 FIELDs 被标记化和索引,因此匹配全文查询。但未存储原始文本。 (从您的 sql_query 中检索的列会自动成为 FIELDS,除非您将它们专门配置为 ATTRIBUTES - 除了第一列,如前所述,它是特殊的)
http://sphinxsearch.com/docs/current.html#fields
http://sphinxsearch.com/docs/current.html#attributes
您可以选择,或者将它们添加为属性(可能使用 sql_field_string,因此属性和字段)。或者接受您无法从 sphinx 获取它们,并将原始数据返回到您的 mysql 数据库。
(第二部分,查询某些FIELDS,见'@'语法:http://sphinxsearch.com/docs/current.html#extended-syntax)
http://sphinxsearch.com/docs/current.html#rt-indexes 实时索引。一种非常不同类型的索引。