我在回答問題的應用程序,作爲其中的一部分,它需要查看以前存儲在SQL數據庫中的問題,並查找以前的問題匹配單詞,然後它將從數據庫獲取該行的屬性。php在sql數據庫中找到最匹配的句子
我已經能夠讓它爲數據庫中的每一行生成一個匹配字的數組。但是我需要一種組織這些數組來選擇最匹配的數組的方法。這裏是我曾經使用過的SQL和PHP。
$questions1 = $_GET['question'];
$questionsarray = explode(" ",$questions1);
新的問題被變成一個數組,它下面會相比對其他問題進行比賽的
$sql = "SELECT * FROM records WHERE userid= '24.9.71.79'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$questionsasked = $row['old_questions'];
// turns old question into an array
$last_q_array = explode(" ",$questionsasked);
//finds matches between the old and new question
$intersectarray = array_intersect($last_q_array,$questionsarray);
然後,它使用和array_diff()清理掉常用詞,以幫助它專注於找到真正的話題
$cleanedarray = array_diff($intersectarray ,$commonwords);
//prints the array if it find matches and sets the var
if(count($cleanedarray)>0) {
print_r($cleanedarray);
$desiredattri = $row[last_answer_type];
echo "<br />----------------<br />";
}
}
}
我使用print_r只是爲了測試。所以它在製作少量顯示匹配單詞的數組方面做得非常出色。這看起來是這樣的
Array ([3] => card)
----------------
Array ([3] => card [7] => work? )
----------------
Array ([0] => find [2] => card [7] => work?)
所以現在我需要找到一種方法來分析這些陣列,並找出最匹配的人。我可以使用count()來計算每個數組中的匹配,但仍然需要將該數字與剩餘的數組進行比較,然後使用大多數匹配數組的屬性。
請正確標記您的問題。你在使用SQL Server還是MySQL? –
@GordonLinoff對不起,我沒有在SQL方面的專業知識,但我很確定它是mySQL –
這看起來很可疑,就像作業... –