查找与单词查询匹配的重要文档

时间:2019-07-08 17:13:32

标签: algorithm document software-design word

所以基本上在这个问题上,我们有1000000个文档:

文件包含:
-文字(包含很多单词)
-日期
-DocId
..等等

,我们有一个包含一些单词(最多1000个)的查询:

所以我们现在的问题是,我们首先找到文档和查询之间的交集,然后找到单词匹配数量最多的前K个顶级文档。

例如:

D1-w1,w2,w3,w4,... wn
D2-w2,w4,w5,x2
D3-a1,a2,w1,x1,x2

Q(w1,a1,w4,w5,x1,w5,w6)

现在执行查询和文档的交集

D1-w1,w4,w5,w6-4场比赛
D2-w4,w5-2场比赛
D3-a1,x1,w1-3-比赛

因此,排名前2位的文档分别是D1和D3

我尝试将单词用于文档映射的二维矩阵。

       D1 D2 D3  
w1     1     1  
w2     1  1  
w3     1         
.  
.  
.  
a1           1    
a2           1  
x1           1  
x2        1  1  

从这个矩阵中,我试图找到数字,但面试官并不满意。

请帮助大家!

1 个答案:

答案 0 :(得分:0)

如果必须自己进行编程,则可能会用1000个单词构建一个哈希表,然后遍历文档并检查所有单词是否匹配。保留k个最匹配的列表,并在每个文档之后进行更新。

在现实生活中,我会将文档填充到PostgreSQL数据库中,在文本上创建全文本搜索索引,然后运行包含搜索词的SQL查询。为什么要重新发明轮子?