如何在倒排索引结构中搜索短语查询?

时间:2010-04-17 16:33:40

标签: search phrase inverted-index

如果我们想在倒排索引结构中搜索这样的查询“t1 t2 t3”(t1,t2,t3必须排队), 我们应该采取哪些方式?

1 - 首先我们搜索“t1”项并查找包含“t1”的所有文档,然后对“t2”然后执行“t3”。然后找到“t1”,“t2”和“t3”位置相互靠近的文件。

2 - 首先我们搜索“t1”项并查找包含“t1”的所有文档,然后在我们找到的所有文档中,我们搜索“t2”,然后在结果中找到文档包含“t3”。

我有一个完整的倒排索引。我想知道上面的优化方法,(1)或(2)?

非常感谢。

1 个答案:

答案 0 :(得分:4)

正如wikipedia条目所解释的那样,

  

有两种主要变体   倒排索引:记录级别   倒排索引(或倒置文件索引   或只是倒置文件)包含一个列表   每个文件的参考文献   字。 字级反转索引(或   完整倒排索引倒排列表)   另外包含的位置   文档中的每个单词。该   后一种形式提供更多功能   (如短语搜索),但需要更多   时间和空间要创造。

由于您没有告诉我们您拥有哪种变体,我们无法准确回答您的问题,但考虑每种可能性都会有所帮助。

打开和搜索文档通常是一项代价高昂的操作,除非您的文档非常小,因此您希望将其最小化 - 而选项(2)并未真正将其最小化。如果您有反向列表,使用选项(1),您甚至不需要打开任何文档;如果你只有一个倒置文件,你将不可避免地需要打开文件并扫描它们(因为你缺少确认单词邻接的信息) - 但至少使用选项(1)你最小化您必须打开和扫描的文档数量(仅限于包含每个单词的文档列表的交叉点)。

所以,在任何一种情况下,选项(1)都更有前途(除非你的文件特别小)。