我在Sphinx中使用两个索引进行搜索:
#users
source users : lsParentSource
{
sql_query_range = SELECT MIN(idDetailToUsers), MAX(idDetailToUsers) FROM detailtousers
sql_query = SELECT idDetailToUsers as id, 1000 as type, UsersTypeAccount, idDetailToUsers, SpecializationName, DetailToUsersName, DetailToUsersPhoto, city, country FROM detailtousers join users ON users.idUsers = detailtousers.idDetailToUsers left join usersspecialization ON usersspecialization.UsersSpecializationIdUser = detailtousers.idDetailToUsers left join specializationtousers ON specializationtousers.idSpecialization = usersspecialization.UsersSpecializationIdSpecialization WHERE idDetailToUsers >= $start AND idDetailToUsers <= $end GROUP BY idDetailToUsers
sql_attr_uint = type
sql_attr_uint = idDetailToUsers
sql_attr_uint = UsersTypeAccount
sql_field_string = SpecializationName
sql_field_string = DetailToUsersName
sql_field_string = DetailToUsersPhoto
sql_attr_uint = city
sql_attr_uint = country
sql_query_info = SELECT idDetailToUsers, DetailToUsersName, UsersTypeAccount, SpecializationName, DetailToUsersPhoto, city, country \
FROM detailtousers WHERE idDetailToUsers = $id
sql_ranged_throttle = 0
}
#medical
source medical : lsParentSource
{
sql_query_range = SELECT MIN(idMedicalFacilities), MAX(idMedicalFacilities) FROM medicalfacilities
sql_query = SELECT idMedicalFacilities as id, 2000 as type, idMedicalFacilities, MedicalFacilitiesName, MedicalFacilitiesPhoto, city, country FROM medicalfacilities WHERE idMedicalFacilities >= $start AND idMedicalFacilities <= $end
sql_attr_uint = type
sql_attr_uint = MedicalFacilitiesIdUser
sql_attr_uint = idMedicalFacilities
sql_field_string = MedicalFacilitiesName
sql_field_string = MedicalFacilitiesPhoto
sql_attr_uint = city
sql_attr_uint = country
sql_query_info = SELECT MedicalFacilitiesIdUser, MedicalFacilitiesName, MedicalFacilitiesPhoto FROM medicalfacilities WHERE idMedicalFacilities = $id
sql_ranged_throttle = 0
}
如果使用索引users
,则只返回select查询中指定的所有属性。
但是如果使用两个索引,则sphinx不会返回属性。
是什么原因?
索引users
的结果:
array(1) {
[533]=>
array(2) {
["weight"]=>
int(1)
["attrs"]=>
array(0) {
}
}
}
索引medical
的结果:
array(5) {
[451]=>
array(2) {
["weight"]=>
int(2)
["attrs"]=>
array(0) {
}
}
[444]=>
array(2) {
["weight"]=>
int(1)
["attrs"]=>
array(0) {
}
}
答案 0 :(得分:0)
Sphinx只返回查询中索引的常用属性。你有不同的名字。
您可以在SetSelect中使用sphinxQL中的EXISTS函数,但从未尝试过。
最简单的方法就是使用相同的属性名称。