algorithm - 如何实现标签搜索?

标签 algorithm tags elasticsearch hashtag

我设计了一个新闻中心系统,它读取 Rss 链接并将整个新闻存储在数据库中。现在我想实现一个使用标签的搜索系统。每个新闻都有自己的标签。有很多算法可以实现这个,但我不知道什么是最常见的才能获得最佳性能。目前我正在使用 Elastic 搜索数据库,并且我使用多个关键字搜索。哪一个最好?
1- 将标签存储在列表或带有分隔符的字符串中并在其中搜索? 2- 像关系系统一样工作,有一个标签表和一个新闻标签表,每个新闻标签都有一条记录。一条新闻的5个标签5条记录 3- 另一种我不知道的算法

最佳答案

看起来你想要像 inverted index 这样的东西

这是一个索引,对于每个术语(在您的情况下是主题标签)都有一个包含此主题标签的文档 ID 列表。

例如,如果您有 3 个文档:d1、d2、d3 以及散列标签:

d1: #tag1, #tag2
d2: #tag3
d3: tag3, #tag2

倒排索引将是:

#tag1: d1
#tag2: d1,d3
#tag3: d2,d3

使用倒排索引查找包含特定术语(在您的情况下为标签)的所有文档相当容易,只需遍历该术语所附的列表即可。
这种数据结构对于并集(或查询)和交集(和查询)也非常有效。

此DS在全文搜索的信息检索中非常流行,也常用于半结构化搜索。

有关更多信息,您可以阅读 Information Retrieval一般来说。 Mannings Introduction to Information Retrievalthe book's first chapter 中表示此数据结构.

关于algorithm - 如何实现标签搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24990717/

相关文章:

algorithm - 以 n 为底数相加

algorithm - 0\1 的贪心算法矩阵

Java ID3 音频标签库

c# - DDD 中的共享功能

elasticsearch - Elasticsearch -查询值

java - 搜索请求生成器 : is there a way to ask to return all fields?

c# - 在区间 [1000,9999] 中查找素数的更好解决方案,其中第一个和第二个之和

algorithm - 这个 Scheme 求幂函数的时间复杂度是多少?

date - 如何使用 HTML5 时间标签标记日期范围?

elasticsearch - Elastic Search同义词-删除操作