查询倒排文件索引

时间:2016-09-22 09:46:21

标签: search-engine querying inverted-index

我在学校有一个项目,我需要使用倒排索引创建一个搜索引擎,我对如何继续进行了一些阻止。

我使用反向文件索引存储了我的文档中的所有单词(4个文档),但在某种程度上,特定文件中的每个单词都有一行,所以我们可以说“like”这个单词可以出现在doc 2中时间和文档4两次 - 所以它将有2行,单词:像docid:2 hit:3 instoplist:0和word:like docid:4 hit:2 instopelist:0(hit是单词出现在doc和instoplist,如果它是stop-list中的单词的一部分。)

现在我需要能够查询该索引。 让我说我需要找 - 汽车和(摩托车或自行车) 这是最好的方法吗?我该如何编写搜索顺序?我怎么知道先骑摩托车和自行车然后在他们之间做'或'然后'和'做车?

* ps-使用php编写代码

我会感激任何帮助,

谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用包含汽车的文件的交叉点(包含摩托车或自行车的文件的联合)

Car:doc1,doc2,doc3

摩托车:doc1,doc4

自行车:doc1,doc2

所以你的最终文件清单应该是doc1,doc2

用于在php中查找交集和联合。 假设你有3个阵列$ car,$ motorcycle和$ bicycle包含这些单词的文件

<?php

  $car = ['doc1','doc2','doc3'];

  $motorcycle = ['doc1','doc4'];

  $bicycle = ['doc1','doc2'];

  $intersect = array_merge($motorcycle, $bicycle);
  $result = array_intersect($car , $intersect);


  for($x = 0; $x < count($result); $x++) {
      echo $result[$x];
      echo "<br>";
  }

?>