gpt4 book ai didi

php - 使用 sphinx(如 friend 的 friend )在社交网络中搜索 friend 和关系

转载 作者:行者123 更新时间:2023-11-30 01:37:04 25 4
gpt4 key购买 nike

我正在寻找一种解决方案,可以通过确切的姓名或名字或姓氏的前缀来搜索 friend 。我的要求与此链接类似。 Sphinx vs. MySql - Search through list of friends (efficiency/speed)但该帖子没有解释如何做到这一点。它确实表示不建议通过 sphinx 搜索关系。任何人都可以建议我是否应该使用以下任何方法或完全不同的方法。此外,我正在寻找高速和可扩展性,例如超过一百万条记录

数据库结构类似。

InnoDB

表1-用户:uid、fname、lname、城市、国家/地区、picurl、状态(picurl 和状态可能随时更改,sphinx 不是实时的,只是说或想象一下,在我的设计中,即使 10 分钟的延迟也是 Not Acceptable 两个字段。)

表2-好友:uid,fid

目标是搜索:“uid 11”的所有 friend ,其 fname 或 lname 或全名中具有前缀“tony”,并提取他们的详细信息。

  • 方法 1:

Sphinx:搜索 uid、fname、lname(属性:城市、国家/地区)

a) 执行 mysql 搜索以提取“uid 11”的 friend ID 并存储在数组 X 中

b) 然后执行 sphinx 搜索通过数组 X 过滤的 docid 的“tony*”。

c) 然后再次执行 mysql 搜索以提取每个匹配的 friend ID 的实时字段,例如 picurl、status。

或者

  • 方法 2:

Sphinx:搜索 uid、fname、lname(属性:城市、国家/地区)+ MVA:friendids(MVA存储所有 friend id)

a) 在 sphinx 中搜索按包含 uid '11' 的 MVA 过滤的 'tony*'

b)然后再次执行 mysql 搜索来提取每个匹配的 friend ID 的实时字段,例如 picurl、status。

  • 方法 3:

没有 sphinx

a)Mysql 搜索“uid 11”的好友,其中 fname like 'tony%' OR lname like 'tony%' OR CONCAT(fname, ' ', lname) LIKE 'tony stark%' OR CONCAT(lname, ' ' , fname) LIKE 'tony stark%' 并在同一查询连接中提取详细信息(从其他帖子来看,对于大量记录来说,这似乎性能较低)

  • 方法 4:

    有什么建议吗?

<小时/>

PS:我的下一个挑战是搜索 friend 的 friend ,所以问题标题..

最佳答案

推荐方法 2

但是对于方法 4 - 可能会使用专用的图形数据库。 (或者专用于 mysql 的 engine) - 对于前缀搜索,您并不严格需要像 sphinx 这样的东西。

关于php - 使用 sphinx(如 friend 的 friend )在社交网络中搜索 friend 和关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16739823/

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