[英]fulltext mysql search and match exact string
好的,這是我讀過並通過mysql並查看了各種選項的灰色問題,我只能認為它是如此明顯,我只是盲目。
簡而言之,我正在制作標簽雲,該過程的一部分是驗證單詞是否存在,如果存在,則+1,但它必須是確切的短語。
因此,我認為全文搜索將是最佳選擇。
舉個例子。
$string = "hair dryer";
$string = '"'.$string.'"'; //enclose string in quotation marks to define must be an exact match
//$string = mysqli_real_escape_string($mysqli,$string); // removed to see if this was effecting the result.
$sql = "SELECT * FROM `search_keyword` WHERE Match (`keyword`) Against ('$string' IN BOOLEAN MODE) LIMIT 1";
$result=mysqli_query($mysqli,$sql);
因此,測試是在數據庫中,我在一行中加上了“吹風機”一詞,並且與之匹配-很好的結果
但是,如果我將字符串更改為“ hair”,它仍然會拉出“ hairdryer”,這不應該做,因為它不完全匹配。
我已經閱讀了所有內容,並且嘗試每種方式都得到了錯誤的結果。
(
[0] => Array
(
[keyword] => hair dryer
[id] => 25
)
) /// should be empty and hair as a single row is not found
請任何建議,歡迎:-)
你可以用PHP做到這一點。 首先將您的字符串轉換為數組,然后比較兩個數組以查看是否存在匹配項。
$string = explode(" ",$string);
$sql = "SELECT keyword FROM search_keyword";
$result=mysqli_query($mysqli,$sql);
$compareArrays = array_intersect($result,$string);
if (is_array($compareArrays) && count($compareArrays) > 0) {
對結果執行某些操作,好像$ compareArrays比1更出色,這意味着您具有完全匹配的內容。 array_intersect比較兩個錯誤,以查看是否存在完全匹配。 這樣,我認為您不會以“ hair”作為字符串來匹配,但是會以“ hairdryer”來匹配。 這樣行嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.