簡體   English   中英

全文mysql搜索並匹配確切的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM