gpt4 book ai didi

MongoDB - 基于标签的自动完成搜索

转载 作者:可可西里 更新时间:2023-11-01 09:49:58 26 4
gpt4 key购买 nike

我正在寻求实现标签搜索功能,并正在寻找有关效率的一些建议。我是 MongoDB 的新手,所以我不确定性能的最佳实践。

好的,所以我想创建一个链接共享应用程序,用户可以根据链接的内容标记链接。例如,一个有趣的狗图像将被标记为“有趣”和“狗”。一个链接将有一个:

 title, 
url,
user_id,
tags: array of tags

现在为了让我允许用户搜索链接,我需要所有使用的标签的列表。为了可用性,这需要具有自动完成功能。因此,我进行了一些研究并使用一组标签进行了测试,在这些标签中我索引了标签值,例如“有趣”,然后使用正则表达式。

 db.tags.find({value:/^search/})

在 600,000 份文档的集合中,它在 63 毫秒内搜索了所有以“s”开头的文档。随着搜索词长度的增加,执行时间会减少。

现在是我不确定的部分。比如说我想找到所有带有标签“有趣”和“狗”的链接(需要使用相交)。我应该如何存储标签?我应该存储每个标签的对象 ID 吗?我可以索引这些对象 ID 吗?是否有另一种方法来构建整个数据库?

我还希望能够根据他们已经输入的标签来推荐标签。例如,我正在考虑在标签文档中添加一个相关字段:

tag
----
id
value
related: [{
tag_id
count
}]

(再次不确定,因为它会建议可能与已输入标签之一相关但与另一个标签无关的标签。如果有交叉,则不会返回任何结果。)

如有任何建议,我们将不胜感激。

编辑:错误

最佳答案

在标签数组上创建一个文本索引。这将使您能够快速搜索 funny、dog 和 funny or dog。

https://docs.mongodb.com/manual/core/index-text/

db.tags.createIndex( { tags: "text" },  {background:true}  )

至于相关标签,我认为您不想引用 _id 值。您或许可以嵌入一系列相关标签,例如:

relatedTags: [{tag1}, {tag2}]

关于MongoDB - 基于标签的自动完成搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37439870/

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