为什么sphinx不返回属性名称?

为什么sphinx不返回属性名称?,sphinx,Sphinx,我在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, idDetailTo

我在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
}
医疗指数结果:


Sphinx只返回查询中索引的公共属性。你有不同的名字

您可能可以在SetSelect中使用sphinxQL中的EXISTS函数,但从未尝试过


最简单的方法就是使用相同的属性名。

但是当我在sphinx.conf中使用一个索引时,它会返回带有名称和值的属性,然后返回哪些属性?它还必须至少返回一个带有表名的属性,您可以使用->setSelect'type';但我不确定。Sphinx确实希望多索引查询使用相同的模式。我会尝试,所以对于每个索引,我必须对表执行单独的查询?如果您希望具有不同的属性,请选择“是”。像mysql UNION一样思考-结果中的每一行必须具有相同的列。
array(1) {
  [533]=>
  array(2) {
    ["weight"]=>
    int(1)
    ["attrs"]=>
    array(0) {
    }
  }
}
array(5) {
  [451]=>
  array(2) {
    ["weight"]=>
    int(2)
    ["attrs"]=>
    array(0) {
    }
  }
  [444]=>
  array(2) {
    ["weight"]=>
    int(1)
    ["attrs"]=>
    array(0) {
    }
  }