我有一個表單,它允許用戶搜索數據庫表中的食譜,他們可以鍵入他們正在尋找的食譜的名稱,或者他們可以鍵入一些關鍵字。php mysql查詢返回基於匹配關鍵字密度的結果
我想弄清楚如何檢查記錄標題並根據關鍵字的密度百分比返回它們。所以說用戶搜索「糖醋雞」的結果會發現所有的配方首先匹配所有的單詞,然後所有的食譜與3個單詞,然後2,然後1.希望是有道理的:)
這裏是我
$keywords = mysqli_real_escape_string($con,$_POST['recipe-search']);
$search_keywords = str_replace("and", "",$keywords);
//Find The Latest Recipies
$searchTerms = explode(' ', $search_keywords);
$searchTermBits = array();
foreach ($searchTerms as $term)
{
$term = trim($term);
if (!empty($term))
{
$searchTermBits[] = "title LIKE '%$term%'";
}
}
$q = "SELECT * FROM tbl_recipes WHERE ".implode(' OR ', $searchTermBits);
,檢查符合每個關鍵詞的冠軍,但它並沒有發現在標題中關鍵詞的密度。任何人都可以幫助我,我很難過!
非常感謝
你應該使用'的preg_replace( '/ \ s {1,}(和\ S *)* /', '',$海峽); '這將替換多個空格,並從字符串中刪除'和'。意味着你可以刪除該循環;) –
什麼讓我的查詢應該成爲「SELECT * FROM tbl_recipes WHERE title =」。 preg_replace('/ \ s {1,}(和\ s *)* /','',$ str);那是對的嗎?表情不太好。謝謝你的建議! – user2886669
不,用你所查詢的'preg_replace'來代替'str_replace'應該是''SELECT * FROM tbl_recipes WHERE title IN('「.implode(」','「,$ searchTerms)。」');「;' –