Я использую php для создания простой поисковой системы, основанной на логическом поиске. У меня есть предопределенные документы, например: - doc0: меня зовут caesar - doc1: caesar - символ ... -doc2 .....
Я построил матрицу терминов-документов следующим образом:
, например, «my» существует в первых документах, но не во втором, а «caesar»в обоих документах, когда я делаю поиск по одному термину, я получаю логические значения термина, поэтому, если я введу «имя» в поисковой системе, я получу 1 0.
моя проблема в том, что я хочу найти более одного термина, например: "символ цезаря" Я хочу сделать логическое значение и между их логическими значениями, таким образом, результат поиска будет0 1 как 1 1 & 0 1 = 01 Так что мне нужна функция php, которая заставляет меня искать более одного слова, используя упомянутый метод
Это код $ query = $ _REQUEST ['ключевое слово'];$ stoplists = array ("i", ".", "a", "");$ Слов = массив ();$ Wordsdoc = массив ();$ Матрица = массив ();$ docs = array («меня зовут цезарь», «цезарь - символ»);$ k = 0;
//looping the docs array
for ($i=0;$i<sizeof($docs);$i++)
{
//splitting doc[i] on " " (space)
$words_temp=explode(" ",$docs[$i]);
//looping the splitted words
for ($j=0;$j<sizeof($words_temp);$j++)
{
//checking if the word is not in stop dictionnary and does not already added in words array
if (!in_array($words_temp[$j],$stoplists) && !in_array($words_temp[$j],$words))
{
//adding word to words array
$words[$k]=$words_temp[$j];
//incrementing counter
$k++;
}
}
//print_r($words[1]);
}
echo "<b>Words:</b> ";
for ($j=0;$j<sizeof($words);$j++)
{
echo $words[$j]." ";
}
echo "<br><br>";
//looping the docs array
for($i=0;$i<sizeof($docs);$i++)
{
//splitting doc[i] on " " (space)
$words_temp=explode(" ",$docs[$i]);
//initialize counter
$l=0;
//looping the splitted words
for ($j=0;$j<sizeof($words_temp);$j++)
{
//checking if the word is not in stop dictionnary
if (!in_array($words_temp[$j],$stoplists) )
{
//adding word to 2d array
$wordsdoc[$i][$l]=$words_temp[$j];
//incrementing counter
$l++;
}
}
}
echo "<b><u>Docs:</u></b><br>";
for($i=0;$i<sizeof($wordsdoc);$i++)
{
echo "doc".$i.": ";
for($j=0;$j<sizeof($wordsdoc[$i]);$j++)
{
echo $wordsdoc[$i][$j]." ";
}
echo "<br>";
}
echo "<br>";
echo "<b>Res Matrix First Col:</b><br>";
for($i=0;$i<sizeof($words);$i++)
{
$matrix[$i][0]=$words[$i];
echo $matrix[$i][0]."<br>";
}
$i1=0;
$i2=0;
foreach($wordsdoc as $items)
{
for($i=0;$i<sizeof($words);$i++)
{
if(in_array($matrix[$i][0],$items))
$matrix[$i][$i1+1] = 1;
else
$matrix[$i][$i1+1] =0;
}
$i1++;
}
echo "<table border=1><br>";
echo "<tr><td></td>";
for($i=0;$i<sizeof($docs);$i++)
{
echo "<td>doc".($i+1)."</td>";
}
echo "</tr><br>";
foreach($matrix as $items)
{
echo "<tr>";
foreach($items as $item)
{
echo "<td>".$item."</td>";
}
echo "</tr><br>";
}
echo "</table><br>";
* Извините за публикацию такого длинного вопроса, но мне действительно нужна помощь: S * заранее спасибо, ребята :)