gpt4 book ai didi

php - Sphinx 使用 PHP API 搜索多个表并聚合结果

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:47 24 4
gpt4 key购买 nike

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

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

当我通过 shell 使用 SEARCH 查询时,我按预期获得了所有结果信息。但是,当我使用 PHP API 时,返回的结果仅包含行的 ID,因此无法判断它来自哪个表。

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

我正在考虑的替代方案是尝试处理 shell 脚本的输出,但这看起来很困惑。

这是 PHP: $search = $_GET['查询']; //连接信息 $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' );

shell 脚本很简单:

./search SEARCHTERM

SEARCHTERM 是搜索的地方

输出的内容如下所示:

Sphinx 2.0.3 版 (r3043)版权所有 (c) 2001-2011,Andrew Aksyonoff版权所有 (c) 2008-2011,Sphinx Technologies Inc (http://sphinxsearch.com)

使用配置文件'/usr/local/sphinx/etc/sphinx.conf'...索引“user”:查询“NEWTON”:在 0.000 秒内返回了 10 个匹配项,共 10 个匹配项

显示匹配:1. 文档=1,权重=2629,时间=Thu Jan 1 00:33:32 1970 id=1 名字=乔 last_name=Shmo 公司=Acme

JSON 格式的 PHP API 输出: { “错误”:””, “警告”:””, “状态”:“好”, “字段”:[“名称”,“代码名称”,“代码”,“描述”,“评级”,“角度”,“发布”,“关键字”,“referenced_num”,“批准”,“used_num”, avg_runtime","examples","editor","published_time"], “属性”:{“时间”:2}, “火柴”: [ {"id":1,"weight":"1","attrs":{"time":2012}} ], “总数”:“1”, "total_found":"1", “时间”:“0.000”, "words":{"posuere":{"docs":"1","hits":"2"}}

最佳答案

我非常确定,在通过 API 进行搜索时,您不仅会获得匹配文档的 ID,还会获得找到的文档的所有其他 int 值。

所以你可以尝试在你的源代码中添加类似的东西

SELECT id, "1" as type FROM table1

sql_attr_uint = type

type 字段现在告诉您该 id 来自哪个表

但是请注意,同时搜索不同表的多个索引存在一些问题。

  1. 您需要确保该 ID 在您的结果集中出现的次数不会超过一次(通常建议的解决方案是将 ID 填充 1000000 或以某种类似的方式填充 - 我个人觉得这很糟糕)

  2. 结果仅包含所搜索的第一个索引中的列。您需要确保所有来源都返回相同的列。

就个人而言,每当我想到一次搜索多个索引时,我最终都会分别搜索每个索引并按原样显示结果。

更新:添加了所需的 sql_attr_uint

关于php - Sphinx 使用 PHP API 搜索多个表并聚合结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10024841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com