如何规范化在MySQL数据库中搜索的文本?

时间:2015-08-05 15:18:37

标签: mysql

我不完全确定我是否使用正确的词语来描述这一点,因为我无法在线查找有关它的信息。我想要做的就是我所谓的文字规范化。我正在建立一个MySQL数据库,我有一些文本数据,我希望能够进行全文搜索。我想要做的是规范文本中的单词。我认为这意味着基本上切断存储的单词(和搜索的单词)的末尾,以便相关的单词将显示在搜索中(即跳跃,跳跃,跳跃,跳跃都会在搜索到任何这些单词时出现) 。在MySQL数据库中可以使用哪些基础结构?

2 个答案:

答案 0 :(得分:3)

如果您希望100%使用MySQL,则可以使用全文搜索功能。 https://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html

您不需要预处理文本字段,因为MySQL的内置功能将处理匹配和权重的停用词和单词片段。

创建全文索引:

CREATE FULLTEXT INDEX fulltextindex ON yourtable(searchfield);

运行全文搜索

SELECT primary_key, searchfield from yourtable where match(searchfield) against ('+someword*' in Boolean mode);

我找到一个简单的东西,布尔与他们的基本模式匹配效果很好。

可以使用几种不同的匹配模式以及构建匹配模式的方法,但是综合评论超出了SO答案的范围。您需要稍微使用此功能以获得满足您的确切需求的东西。

这就是所有人说的: MySQL并不适合这种“最佳”,但根据您的需要,通常可以提供足够的功能。例如,我可能不会在我的堆栈中添加另一个像Solr的层来创建一个基于文本搜索的简单类型,除非前面的类型需要一些疯狂的下一级智能 - 我只是使用mysql全文搜索

答案 1 :(得分:1)

我不确定你在问什么,但为了让跳跃,跳跃,跳跃和跳跃都显示出来,你可以做类似的事情:

SELECT * FROM tableName WHERE columnName LIKE 'jump%'

如果这不是你的意思,请道歉。

相关问题