我设法让Sphinx运行以使用以下内容索引表: emp_id,emp_name,emp_department,emp_gender,emp_join_date,emp_notes
如何使用Sphinx返回emp_gender为“male”的结果?
<?php
include ('sphinxapi.php');
$cl = new SphinxClient();
$cl->SetServer( "SPHINX2", 3312 );
$cl->SetMatchMode( SPH_MATCH_EXTENDED);
$result = $cl->Query( "male","sphinx_search");
?>
以上返回男性的任何地方,包括emp_notes字段和emp_gender字段。请告知我如何定位列。像@emp_gender男性会工作吗?它没有按预期返回结果
答案 0 :(得分:2)
你必须像这样使用field search operator:
$cl->Query( "@emp_gender male", "sphinx_search" );
答案 1 :(得分:1)
性别等信息可以更好地存储在属性中。 您可以将SQL查询更改为smth。像这样:
select if(emp_getnder = 'male', 1, 0) as gender,.....
然后你可以使用'gender'字段作为整数属性:
sql_attr_uint = gender
在你的appp中:
$cl->setFilter('gender', array(1)); //select only male
$cl->Query("", "sphinx_search");
这个解决方案的工作速度比按字段过滤要快得多,而且非常灵活,因为 过滤器和查询是分开的。