gpt4 book ai didi

php - 在我的网站中创建类似 Facebook 的搜索

转载 作者:行者123 更新时间:2023-11-29 20:15:27 24 4
gpt4 key购买 nike

我们都知道 Facebook 存在图搜索。用户可以搜索来自伦敦的喜欢骑自行车的人,例如喜欢 Yaga 的 friend 的 friend ,或者某个月或某年的 friend 或男朋友的照片。

所有这些数据都是从没有过滤字段的单个搜索输入中提取的。

我试图从与 PHP 类似的东西开始,但我无法确切地说出这是如何实现的。

我想知道这是否仅通过某种数据库设计方法(简单的 RDBMS)应用...或者它是一种用关键字逻辑链接到数据库表的图形节点结构...还是 RDBMS 的混合和 NOSQL...或任何其他方法。至于文本输入本身,必须对特定关键字进行某种剖析和匹配,以获得数据的相关性并将其引导到正确的查询执行。

在我的网站中实现 php 图形搜索(或至少类似的东西)的最佳实践是什么?在我的网站中,我有类似于具有分组相关数据的零售电子商务系统的东西?

最佳答案

您可以单独解决每个示例,但这可能会很乏味,而且您可能会在性能方面遇到困难。

People who like cycling and are from London (SQL)

   SELECT users.id 
FROM users, posts, topics, locations
WHERE posts.topic_id = topics.id
AND users.id = posts.author_id
AND users.location_id = locations.id
AND locations.city = 'London'
AND topics.name = 'cycling'
GROUP BY users.id
ORDER BY COUNT(posts.id) DESC

(using a really loose definition of 'liking cycling', and being 'from London')

关系数据库不能特别优雅地处理大量连接。在负载或大型数据集的情况下,您的性​​能将会受到影响。

<小时/>

但是,在图形数据库(如 Neo4J 或 TitanDB)中,您可以在针对服务而优化的环境中,以更通用的方式遍历相关实体的图形并收集匹配的实体节点您正在考虑的用例类型。

Same query (Cypher - Neo4J)

   MATCH (topic:Topics {name:'cycling'})
<-[:POST_TOPIC]-(post:Posts)
-[:AUTHORED_BY]->(user:Users)
WHERE user-[:RESIDENT_OF]->(location:Location {city:'London'})
RETURN user.id AS user_id, count(post) AS post_count
ORDER BY post_count DESC

These are also expressible as Gremlin traversals (for Titan and other Graph DBs), but they start getting quite verbose and hard to decipher.

有一些通用方法可以通过 Facebook 风格的图形搜索相关性来处理您所描述的内容。就您而言,听起来您可能想要个性化搜索,例如与搜索者相距几度的所有相关顶点(使用您拥有的任何边关系:位置、兴趣、 friend 等)。

<小时/>

如果您无法轻松枚举今天想要构建的所有用例,那么您可能会更喜欢图形数据库,这样您就可以试验您的想法,并将其投入生产,而无需偷工减料性能原因。

关于php - 在我的网站中创建类似 Facebook 的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39815172/

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