Sphinx Search Multiple Tables and Aggregate Results Using PHP API(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年,斯芬克斯技术公司(http://sphinxsearch.com)
使用配置文件‘/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搜索多个表并聚合结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Sphinx使用PHPAPI搜索多个表并聚合结果
- PHP foreach() 与数组中的数组? 2022-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- PHP - if 语句中的倒序 2021-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01