布尔检索php

布尔检索php,php,matrix,search-engine,boolean,information-retrieval,Php,Matrix,Search Engine,Boolean,Information Retrieval,我正在使用php制作一个基于布尔检索的简单搜索引擎 我有预定义的文档 例如: -doc0:我叫凯撒 -doc1:凯撒是个人物。。。 -文档2 我构建了术语文档矩阵,如下所示: 例如,“我的”存在于第一个文件中,但不存在于第二个文件中,“凯撒”存在于两个文件中 当我搜索单个术语时,我会得到该术语的布尔值,因此如果我在搜索引擎中键入“name”,我会得到10 我的问题是我想搜索更多的词,例如:“凯撒人物” 我想在它们的布尔值之间设置一个布尔and,因此搜索结果将为0 1,即1 1&0 1=01 因此

我正在使用php制作一个基于布尔检索的简单搜索引擎 我有预定义的文档 例如: -doc0:我叫凯撒 -doc1:凯撒是个人物。。。 -文档2

我构建了术语文档矩阵,如下所示:

例如,“我的”存在于第一个文件中,但不存在于第二个文件中,“凯撒”存在于两个文件中 当我搜索单个术语时,我会得到该术语的布尔值,因此如果我在搜索引擎中键入“name”,我会得到10

我的问题是我想搜索更多的词,例如:“凯撒人物” 我想在它们的布尔值之间设置一个布尔and,因此搜索结果将为0 1,即1 1&0 1=01 因此,我需要一个php函数,使我能够使用上述方法搜索多个单词

这是代码 $query=$_请求['keyword']; $stoplists=数组(“i”、“a”、“a”); $words=array(); $wordsdoc=array(); $matrix=array(); $docs=array(“我的名字是凯撒”,“凯撒是一个字符”); $k=0

//循环文档数组

对于($i=0;$i可能您应该尝试分解搜索查询并搜索数组的每个部分,然后根据需要合并结果

function search($word) {
  ... code to query the matrix ...
  return $result_array;
}
与多个词连用

$search_terms = array('my', 'caesar');
$overall_result = array(true, true);
foreach($search_terms as $st) {
  $this_result = search($st);
  $overal_index = 0;
  foreach($this_result as $b) {
    $overall_result[$overal_index] = $b && $overall_result[$overal_index];
    $overal_index++;
  }
}
与多个词连用

$search_terms = array('my', 'caesar');
$overall_result = array(true, true);
foreach($search_terms as $st) {
  $this_result = search($st);
  $overal_index = 0;
  foreach($this_result as $b) {
    $overall_result[$overal_index] = $b && $overall_result[$overal_index];
    $overal_index++;
  }
}

如果不提供有关您如何实现
矩阵以及如何查询矩阵的更多信息,@Vidor是唯一可能的建议。我们可以处理您的
搜索($word)
作为一个黑匣子运行;然后将所有结果数组汇总成一个整体。我建议了以下方法。在不提供有关如何实现
矩阵以及如何查询矩阵的更多信息的情况下,@Vidor是唯一可能的建议。我们可以处理您的
搜索($word)
作为一个黑匣子运行;然后将所有结果数组汇总成一个整体。我建议了下面的方法。这是正确的,但假设我有一个搜索($word)函数返回一个数组或布尔值,我分解查询并对每个词进行搜索,但如何存储它们并在它们之间执行布尔运算?这是正确的,但假设我有一个搜索($word)函数返回一个数组或布尔值,我分解查询并对每个词进行搜索,但如何存储它们并在它们之间执行布尔和?