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

时间:2015-02-08 11:44:50

标签: 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, 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) {
    }
  }

1 个答案:

答案 0 :(得分:0)

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

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

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