내가 문서, 예를 들어 미리 정의 된 한 부울 검색 에 기지 간단한 검색 엔진을 만들려면 : - doc0을 : 내 이름은 시저 입니다 - DOC1 : 시저가 문자입니다. .. -doc2 .....부울 검색 PHP
다음과 같이 I 용어 - 문서 행렬을 구축 한:
그래서 예를 들어, "내"가 처음으로 문서에 존재하지만 "두 번째와의 황제 "두 문서에 내가 하나의 용어에 대한 검색을 할 때 내가 부울 값을 얻을 따라서 검색 엔진에 "이름"을 입력하면 1 0을 얻게됩니다.
내 문제는 내가 한 학기의 예보다는 MOR 검색 할 것입니다 : "시저 문자" 을 내가 부울 1 1 등 1 0 검색의 결과가 될 것입니다, 따라서 그들의 부울 값 사이 만들고 싶어 = 01 & 0 1 그래서 나는 나를 언급 한 방법을 사용하여 둘 이상의 단어를 검색 할 PHP 함수를 필요로
이 코드입니다 $ 쿼리 = $ _REQUEST [ '키워드']; $ stoplists = array ("i", ".", "a", ""); $ words = array(); $ wordsdoc = array(); $ matrix = array(); $ 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>";
* 나는 그런 긴 질문을 게시 미안 해요,하지만 난 정말 도움이 필요합니다 당신이 검색 쿼리를 폭발하도록해야 사전 : 어쩌면
'매트릭스 '를 구현하는 방법과 쿼리 방법에 대한 자세한 정보를 제공하지 않고 @ Vidor가 유일한 조언입니다. –
코드를 추가하고 있습니다. – Mariya
'search ($ word)'함수를 * 블랙 박스 *로 취급 할 수 있습니다; 모든 결과 배열을 전체 배열로 집계합니다. 나는 아래의 방법을 제안했다. –