首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL中的词干词干

MySQL中的词干词干
EN

Stack Overflow用户
提问于 2018-01-08 05:54:16
回答 1查看 2.4K关注 0票数 3

例如,用户可以在MySQL中搜索“测试”、“测试”或“测试”。所有这些词都是相互关联的,因为“测试”这个基本词在所有这些词中都很常见。有什么方法可以得到这样的结果或功能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-08 06:13:53

MySQL全文搜索

历史上,MyISAM引擎支持全文搜索。在版本5.6之后,MySQL还支持InnoDB存储引擎中的全文搜索.这是个好消息,因为它使开发人员能够从InnoDB的引用完整性、执行事务的能力和行级锁中获益。

在MySQL中,全文搜索基本上有两种方法:自然语言和布尔模式。(第三个选项通过第二个扩展查询来增强自然语言搜索。)

自然模式和布尔模式的主要区别在于,布尔值允许某些运算符作为搜索的一部分。例如,如果一个单词在查询中比其他单词具有更大的相关性,或者某个特定的单词应该出现在结果中,则可以使用布尔运算符。值得注意的是,在这两种情况下,结果都可以按照MySQL在搜索过程中计算出来的相关性进行排序。

最适合我们的问题是在布尔模式下使用InnoDb全文搜索。为什么?

  • 我们几乎没有时间来实现搜索功能。
  • 在这一点上,我们没有需要处理的大数据,也没有大量的负载需要像Elasticsearch或Sphinx这样的东西。
  • 我们使用不支持Elasticsearch或Sphinx的共享托管,而硬件在这个阶段非常有限。
  • 虽然我们想要搜索函数中的word,但它不是一个交易破坏者:我们可以(在约束范围内)通过一些简单的PHP编码和数据去规范化来实现它。
  • 布尔模式下的全文搜索可以使用通配符搜索单词(对于单词词干),并根据相关性对结果进行排序。

规范Vertabelo模型中的

让我们看看简单的搜索是如何工作的。我们将首先创建一个示例表:

代码语言:javascript
运行
复制
CREATE TABLE artists (
         id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL,bio text NOT NULL, CONSTRAINT artists_pk PRIMARY KEY (id)
                    )ENGINE InnoDB;
CREATE  FULLTEXT INDEX artists_idx_1 ON artists (name);

自然语言模式下的

您可以插入一些示例数据并开始测试。(最好将其添加到示例数据集中。)例如,我们将尝试搜索迈克尔·杰克逊:

代码语言:javascript
运行
复制
SELECT
    *
FROM
    artists
WHERE
    MATCH (artists.name) AGAINST ('Michael Jackson' IN NATURAL LANGUAGE MODE)

此查询将查找与搜索条件匹配的记录,并按相关性对匹配记录进行排序;匹配越好,其相关性就越高,结果将显示在列表中。布尔模式

我们可以在布尔模式下执行相同的搜索。如果我们不对查询应用任何运算符,唯一的区别将是结果不按相关性排序:

代码语言:javascript
运行
复制
SELECT
    *
FROM
    artists
WHERE
    MATCH (artists.name) AGAINST ('Michael Jackson' IN BOOLEAN MODE)

布尔模式下的通配符运算符

因为我们想搜索词干和部分单词,所以我们需要通配符运算符(*)。此运算符可用于布尔模式搜索,这就是我们选择该模式的原因。

所以,让我们发挥布尔搜索的力量,并尝试搜索艺术家的部分名字。我们将使用通配符操作符来匹配名以“Mich”开头的任何艺术家:

代码语言:javascript
运行
复制
SELECT
    *
FROM
    artists
WHERE
    MATCH (name) AGAINST ('Mich*' IN BOOLEAN MODE)
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48144890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档