我怎样才能获得倒排索引?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我怎样才能获得倒排索引?相关的知识,希望对你有一定的参考价值。

我再次使用Spark。如何使用Spark获取csv文件的反向索引?我有csv文件

df.show()
+--------+--------------------+--------------------+----------+
|      id|               title|                tags|closeddate|
+--------+--------------------+--------------------+----------+
|48702270|                null|                null|      null|
|48702455|                null|                null|      null|
|48702469|                null|                null|      null|
|48704166|                null|                null|      null|
|48704172|                null|                null|      null|
|48704243|Transfer files fr...|<java><android><f...|      null|
|48704263|for each loops as...|<java><java-8><mu...|      null|

如何获得显示顶部标签的倒排索引作为示例?

答案

首先,您需要将tags列转换为数组,如下所示:

from pyspark.sql.types import *
def read_tags_raw(tags_string): 
    return tags_string.strip('>').strip('<').split('><') if tags_string else []

read_tags = udf(read_tags_raw, ArrayType(StringType()))
df_valid_tags = df.withColumn('tags', read_tags('tags'))

然后调用explode和group by tag来创建倒排索引:

df_valid_tags.select(explode('tags').alias('tag'), 'id') 
    .groupBy('tag').agg(collect_list('id').alias('ids'))

祝SO运行数据库好运;-)

以上是关于我怎样才能获得倒排索引?的主要内容,如果未能解决你的问题,请参考以下文章

大白话告诉你倒排索引是个啥

漫画ES原理 必知必会的倒排索引和分词

Elasticsearch调优篇 01 - Elasticsearch 倒排索引这一篇足够了

推荐系统[九]项目技术细节讲解z1:Elasticsearch 如何进行快速检索(ES倒排索引和分词原理)以及倒排索引在召回中的应用。

对于一些微积分密集型代码,我怎样才能获得最快的迭代?

我的 setInterval 函数减慢了我的代码速度——我怎样才能修改它以获得更好的性能?