Sphinx使用PHPAPI搜索多个表并聚合结果

编程入门 行业动态 更新时间:2024-10-28 10:24:58
本文介绍了Sphinx使用PHPAPI搜索多个表并聚合结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试使用Sphinx搜索具有不同字段的几个MySQL表,并根据相关性将所有结果合并到一个集合中。

我已经为每个表配置了Sphinx的索引,并且通过一次搜索所有索引成功地合并了结果。

当我使用SEARCH通过外壳进行查询时,我会如期得到所有结果信息。但是,当我使用PHPAPI时,结果只返回行的ID,因此无法知道它来自哪个表。

有没有办法让PHP API告诉我它来自哪个表/索引,以便我可以进入并查询实际数据?

我正在考虑的替代方案是尝试处理外壳脚本的输出,但这看起来很混乱。

以下是PHP: $SEARCH=$_GET[‘QUERY’]; //连接信息 $sphinxClient=new SphinxClient(); $sphinxClient->SetServer(‘localhost’,9312); $sphinxClient->SetMaxQueryTime(5000);

//Sphinx Result Configuration $sphinxClient->SetMatchMode(SPH_MATCH_ANY); $sphinxClient->SetRankingMode( SPH_RANK_PROXIMITY_BM25 ); $sphinxClient->SetLimits(0, 20); // Give me back the results as an array $sphinxClient->SetArrayResult(true); $searchResults = $sphinxClient->Query( $search, 'user model' );

外壳脚本很简单:

./search SEARCHTERM

其中SEARCHTERM是搜索

它输出的内容如下:

Sphinx 2.0.3-版本(R3043) 版权所有(C)2001-2011,安德鲁·阿克肖诺夫 版权所有(C)2008年至2011年,斯芬克斯技术公司(sphinxsearch)

使用配置文件‘/usr/local/sphinx/etc/sphinx.conf’... 索引‘USER’:查询‘牛顿’:在0.000秒内返回10个匹配项,共10个

显示匹配项: 1.文件=1,权重=2629,时间=清华1 00:33:32 1970 ID=1 名字=乔 姓氏=shmo 公司=Acme

JSON格式的PHP API输出: { "Error":"", "Warning":"", "Status":"良好", "field":["名称","code_name","code","Description","Rating","angles","发布","key_words","参考数字","已批准","used_num","avg_time","Examples","EDITOR","PUBLISHED_Time"], "attrs":{"time":2}, "Matches": [ {"id":1,"weight":"1","attrs":{"time":2012}} ], "Total":"1", "TOTAL_FOUND":"1", "Time":"0.000", "Words":{"posuere":{"docs":"1","Hits":"2"}} )

推荐答案

向您返回对象(行)ID是很正常的。问题出在你的模型上。如果你不能通过id确定是哪个物体,那么你的模型就错了。 可能的选项包括:

  • 为对象类型(表或一组链接表)创建单独的SPHINX索引
  • 改进对象计数以识别对象,例如通过添加一些前缀。

更多推荐

Sphinx使用PHPAPI搜索多个表并聚合结果

本文发布于:2023-10-27 18:20:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1534162.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多个   Sphinx   PHPAPI

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!