|
|
1
1
所需的基本数据结构是
inverted index
. 这会将每个单词映射到包含它的文档集。让我们说
这样就得到了一个表示查询的抽象语法树。这是一个具有以下节点类型的树:
要计算此树,请遵循以下用伪代码表示的简单规则:
因此,
你可以代表每一组
不过,据我所知,交叉点很少通过交叉哈希表来计算——相反,通常会发生以下情况:假设有3个集要相交,我们选择一个(最好是最小的)并为每个文档分配一个计数器(等于1)。然后我们迭代其他集合,增加每个找到的文档的计数器。最后,我们报告其计数器变为3的每个文档(这意味着该文档出现在所有集合中,因此存在于它们的交集中)。 |
|
|
2
1
这就是我目前找到的解决方案: 1) keyMap,HashMap,其中key是关键字,value是文档的LinkedList。 2) docMap,HashMap,其中键是文档id,值是一组关键字 现在,对于这样一个查询(“key1和key2”),我将:
有没有更好的办法? 三个关键词怎么样? |
|
3
0
|