使用Mysql和PHP进行智能搜索

使用Mysql和PHP进行智能搜索,php,mysql,database,match,Php,Mysql,Database,Match,我有一个名为products\u list的SQL表,其中包含产品的详细信息,我可以在这里列出两个非常重要的字段,在此基础上我需要集成Intelligent搜索结果 产品标识 产品名称 中的内容示例 联想K3纸币 联想祖克 苹果iphone6s 联想A6000 等等 我需要什么? 如果用户输入lenov,结果应为“联想k3笔记本、联想zuk、联想a6000” 如果用户输入le,则结果应为“联想k3笔记本、联想zuk、联想a6000、苹果iphone 6s” 如果用户输入6iphone,结果应该是

我有一个名为
products\u list
的SQL表,其中包含产品的详细信息,我可以在这里列出两个非常重要的字段,在此基础上我需要集成Intelligent搜索结果

  • 产品标识

  • 产品名称

  • 中的内容示例

  • 联想K3纸币

  • 联想祖克

  • 苹果iphone6s

  • 联想A6000

  • 等等

    我需要什么?

    如果用户输入
    lenov
    ,结果应为
    “联想k3笔记本、联想zuk、联想a6000”

    如果用户输入
    le
    ,则结果应为
    “联想k3笔记本、联想zuk、联想a6000、苹果iphone 6s”

    如果用户输入
    6iphone
    ,结果应该是
    “苹果iphone6s”

    注意:非常重要的是,我需要首先列出最匹配的产品,例如,如果用户输入
    lenov zu
    ,结果应按最匹配的产品排序 这里的字符串像‘lenovo zukfirst、lenovo a6000和lenovo k3 以任何顺序'

    我尝试了什么?

    我尝试使用
    'like'
    ,它几乎可以工作,但无法使用最匹配的字符串进行排序。
    从产品列表中选择*,其中产品名称如“%$searchString%”按产品名称asc排序

    我尝试使用
    'MATCH-on'
    逻辑,这很有效,但再次排序失败

    select *, MATCH(product_title) AGAINST ('$searchString*') AS RELEVANCE from product_list where MATCH(product_title) AGAINST ('$searchString*' IN BOOLEAN MODE) order by RELEVANCE DESC
    
    相关性
    始终为0

    注意:我使用了
    MyISAM
    作为存储引擎,并添加了
    全文
    将
    索引到字段
    产品标题


    这是什么意思<代码>此操作有效,但再次排序失败。
    匹配
    是实现此目的的正确方法如果打印
    相关
    变量以查看标点符号如何给出每个结果,会怎么样?使用
    全文
    键设置的字段是否对我们有用(帮助您),以及它为什么在布尔模式下搜索
    ?变量中的
    *
    是什么<代码>(“$searchString*”)
    。我不明白那种说法。我在没有布尔模式和通配符的情况下使用match-on,它一直工作正常。如果删除
    *
    并搜索
    leno
    ,它也必须显示
    lenovo k3