首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sphinx搜索-新手

Sphinx搜索-新手
EN

Stack Overflow用户
提问于 2011-02-01 18:15:04
回答 2查看 594关注 0票数 0

我已经设法让Sphinx运行以使用以下内容为表建立索引: emp_id、emp_name、emp_department、emp_gender、emp_join_date、emp_notes

如何使用Sphinx返回emp_gender为"male“的结果?

代码语言:javascript
复制
<?php
include ('sphinxapi.php');
$cl = new SphinxClient();
$cl->SetServer( "SPHINX2", 3312 );
$cl->SetMatchMode( SPH_MATCH_EXTENDED);
$result = $cl->Query( "male","sphinx_search");
?>

上面的代码返回male anywhere,包括emp_notes字段和emp_gender字段。请建议我如何可以针对列。像@emp_gender male这样的东西会起作用吗?它不会按预期返回结果

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-01 18:46:38

您必须像这样使用field search operator

代码语言:javascript
复制
$cl->Query( "@emp_gender male", "sphinx_search" );
票数 2
EN

Stack Overflow用户

发布于 2011-08-07 16:47:51

性别等信息最好存储在属性中。您可以将SQL查询更改为smth。如下所示:

代码语言:javascript
复制
select if(emp_getnder = 'male', 1, 0) as gender,..... 

然后你可以使用‘性别’字段作为整型属性:

代码语言:javascript
复制
sql_attr_uint = gender

在您的appp中:

代码语言:javascript
复制
$cl->setFilter('gender', array(1)); //select only male
$cl->Query("", "sphinx_search");

这种解决方案比按字段过滤要快得多,而且非常灵活,因为过滤器和查询是分开的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4861300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档