我是MySQL和Sphinx的新手,然后尝试实践实践项目。我想在sphinxsearch的2个表上应用联合。以下是我的SQL查询
sql_query =
(SELECT users.id AS uid, users.fname, users.lname, users.email
FROM users)
UNION ALL
(SELECT documents.id AS diid, documents.description
FROM documents);
但是当我去索引命令时,它显示了错误
错误:索引'my_search':sql_query:您的SQL中有一个错误 句法;检查与您的MySQL Server版本相对应的手册 适用于用户附近使用的正确语法)工会 所有选择文档 (dsn = mysql://root:***@localhost:3306/testsphinx)。
我认为联合中的两个'子征服'应该具有相同的模式。即数据库将产生一个带有列的结果集。它只是行来自不同的表。
如果要在sphinx中索引两个表 - 一个索引,最好使用多重源
source users {
...
sql_query =
SELECT users.id AS uid, users.fname, users.lname, users.email
FROM users
...
}
source documents {
...
sql_query =
SELECT documents.id AS diid, documents.description
FROM documents
...
}
index index1 {
source users
source documents
path = /var/sphinx/index1
....
}
,但也可以使它们太分开索引。这给出了最大的灵活性,可以在需要的情况下一起查询
sphinx> SELECT * from users,documents WHERE MATCH('toad')
或也可以单独查询它们。