【问题标题】:How to search phrase queries in inverted index structure?如何在倒排索引结构中搜索短语查询?
【发布时间】:2010-04-17 16:33:39
【问题描述】:

如果我们想在倒排索引结构中搜索“t1 t2 t3”(t1,t2,t3 必须排队)这样的查询, 我们应该怎么做?

1-首先我们搜索 "t1" 词并找到所有包含 "t1" 的文档,然后对 "t2" 和 "t3" 进行这项工作。然后找到“t1”、“t2”和“t3”位置相邻的文档。

2-首先我们搜索“t1”这个词并找到所有包含“t1”的文档,然后在我们找到的所有文档中,我们搜索“t2”,接下来,在这个结果中,我们找到了包含“t3”。

我有一个完整的倒排索引。我想知道上面哪些方式是优化的,(1)还是(2)?

非常感谢。

【问题讨论】:

    标签: search phrase inverted-index


    【解决方案1】:

    正如wikipedia 条目很好解释的那样,

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

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

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

    因此,无论哪种情况,选项 (1) 都更有希望(除非您的文档特别小)。

    【讨论】:

      猜你喜欢
      • 2011-04-26
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      相关资源
      最近更新 更多