Benim arama motoru geliştirmek

2 Cevap php

I have tried to implement a simple search engine for my application. This is what I have done:

    CREATE FULLTEXT INDEX item_name_other_name_desc_index
    ON item (name,other_name,description)

public static function Search($string)
{   

    $delims = ',.; ';
        $word = strtok($string,$delims);
        while($word)
        {

           $result['accepted'][] = $word;                   
           $word = strtok($delims);

        }

          $string = implode(" ", $result['accepted']);

    $sql = 'SELECT item_id,name,other_name,description,price,discounted_price, thumbnail_photo,large_photo
    FROM item
    WHERE 
    MATCH(name,other_name,description)
    AGAINST(:string)' ;
    $parameters = array(':string' => $string);
    $result['items'] = DB::GetAll($sql,$parameters);
    return $result;
}

Bu çalışır ve sadece kelimeleri arar. Herkes bana önerebilir ben nasıl artırabilir ve ben bu dize ile başlayan me sonuçları gösterecektir "Bi" gibi dizeler aramak istiyorsanız nasıl ben devam yok. (Örneğin Bisiklet için ..)

2 Cevap

You could use the MySQL Fulltext-Search in Boolean mode. This allows searches like 'Bi*'. You only would have to append the * to each accepted word and change the SELECT a bit.

SELECT item_id,name,other_name,description,price,
       discounted_price,thumbnail_photo,large_photo
FROM item
WHERE 
MATCH(name,other_name,description)
AGAINST(:string IN BOOLEAN MODE)

dizge 'Bi *' ile doludur: nerede

böylece sen '%' gibi joker karakterler kullanabilirsiniz ve '_' ... senin örneğin, Bi% gibi bir arama anahtarı olan set sonucunda 'Bi' ile başlar Bisiklet ve diğer herhangi bir kelime yer alacak .... ve ...