所以基本上在这个问题上,我们有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
从这个矩阵中,我试图找到数字,但面试官并不满意。
请帮助大家!
答案 0 :(得分:0)
如果必须自己进行编程,则可能会用1000个单词构建一个哈希表,然后遍历文档并检查所有单词是否匹配。保留k个最匹配的列表,并在每个文档之后进行更新。
在现实生活中,我会将文档填充到PostgreSQL数据库中,在文本上创建全文本搜索索引,然后运行包含搜索词的SQL查询。为什么要重新发明轮子?