【问题标题】:MySQL Full Text Search Boolean Mode Partial MatchMySQL全文搜索布尔模式部分匹配
【发布时间】:2011-03-04 02:56:17
【问题描述】:

我发现 MySQL 全文搜索的布尔模式很有用,但是有几件事我似乎不知道如何实现。

例如,假设我有一个全文列,其中包含“Steve 的 Javascript 教程 - 第一部分”。

我想为以下每个搜索匹配这个:“tutorials”、“javascript tutorials”、“java”、“java script”、“script”

想象一下,这些搜索中的每一个都被简单地分配给可能使用的任何语言的变量(我总是使用 PHP)。

我如何修改它以确保每次搜索都返回史蒂夫的文章?

MATCH (article_title) 反对 ('"+$variable+"*' IN BOOLEAN MODE)

【问题讨论】:

    标签: mysql full-text-search boolean


    【解决方案1】:

    这是不可能的;)

    当您搜索“tutorials”时,将找不到该条目,因为数据库中的条目是单数,而搜索词是复数。在将值插入数据库(和搜索)之前,您应该进行某种形式的“词干提取”。

    当你这样做了,你的表达就会起作用。对于包含更多单词(空格)的搜索词,您应该在每个单词中添加星号。

    【讨论】:

    • 想象一个场景,用户将文本输入到搜索表单中。在每个单词之间使用星号适用于“java script”。但是想象他们正在搜索“伦敦巴黎”,这将需要返回“我从伦敦到巴黎的旅行”以及“我从巴黎到伦敦的旅行”。所以使用 London*Paris 是行不通的。相反,需要的是+london+paris。但当然,这不适用于“+java+script”示例。鉴于这将用于用户输入,有没有办法同时满足这两个示例。
    • 当用户提交拼写错误的单词(Java 和 Script 之间的空格)时,您无法使用 mysql 布尔模式更正它。您必须实现拼写检查或使用模糊搜索,但 MySQL 无法进行模糊搜索
    猜你喜欢
    • 2012-04-20
    • 1970-01-01
    • 2011-10-30
    • 2016-07-26
    • 1970-01-01
    • 2015-02-14
    • 2023-01-02
    • 1970-01-01
    • 2012-04-01
    相关资源
    最近更新 更多