我在学校有一个项目,我需要使用倒排索引创建一个搜索引擎,我对如何继续进行了一些阻止。
我使用反向文件索引存储了我的文档中的所有单词(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编写代码
我会感激任何帮助,
谢谢
答案 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>";
}
?>