繁体   English   中英

改善我的搜索引擎

[英]Improve my Search engine

我试图为我的应用程序实现一个简单的搜索引擎。 这是我所做的:

    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;
}

这有效并且仅搜索单词。 任何人都可以建议我如何改进它,以及如何搜索“ Bi”之类的字符串,该字符串将向我显示以该字符串开头的结果。(例如,Bike。)

您可以在布尔模式下使用MySQL全文搜索。 这样可以进行类似“ Bi *”的搜索。 您只需要将*附加到每个接受的单词上,然后对SELECT稍作更改即可。

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)

:string用'Bi *'填充

您可以使用'%'和'_'之类的通配符...例如,具有Bi%之类的搜索键将包含Bike以及结果集中以'Bi'开头的任何其他单词。...等等...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM