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

如何规范MySQL数据库中要搜索的文本?,mysql,Mysql,我不完全确定我是否使用了正确的词语来描述这一点,因为我在网上很难找到关于它的信息。我想做的是,我相信这就是所谓的词语规范化。我正在建立一个MySQL数据库,我有一些文本数据,我希望能够对它们进行全文搜索。我想做的是规范文本中的单词。我认为这意味着基本上切断了存储单词和搜索单词的末端,这样相关单词就会出现在搜索中,即当搜索这些单词时,跳跃、跳跃、跳跃都会出现。在MySQL数据库中,有什么基础设施可以实现这一点?我不确定您的要求是什么,但为了使跳跃、跳跃、跳跃和跳跃都显示出来,您可以执行以下操作:

我不完全确定我是否使用了正确的词语来描述这一点,因为我在网上很难找到关于它的信息。我想做的是,我相信这就是所谓的词语规范化。我正在建立一个MySQL数据库,我有一些文本数据,我希望能够对它们进行全文搜索。我想做的是规范文本中的单词。我认为这意味着基本上切断了存储单词和搜索单词的末端,这样相关单词就会出现在搜索中,即当搜索这些单词时,跳跃、跳跃、跳跃都会出现。在MySQL数据库中,有什么基础设施可以实现这一点?

我不确定您的要求是什么,但为了使跳跃、跳跃、跳跃和跳跃都显示出来,您可以执行以下操作:

SELECT * FROM tableName WHERE columnName LIKE 'jump%'

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

如果您希望100%使用MySQL,您可以使用全文搜索功能

您不需要预处理文本字段,因为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全文搜索,我想我会在数据库基础设施之前使用put a lucene搜索;这到底是什么意思?IMHO MySQL或任何类似的数据库都不适合您的任务。取而代之的是,看一看,例如,哪个有内置的功能,并使用lucene来执行实际的搜索。稍后,您可以将lucene结果映射回数据库条目。对不起,我的第一条评论很简短。小补充:我想你在找。+和*是做什么的?如果它是一个短语而不是一个单词,我该如何处理它们呢?我会在每个单词前加+吗,在每个单词后加*吗?或者在字符串的开头只有一个+而在字符串的结尾只有一个*?@JustinEyster the*是通配符,所以在本例中,任何以someword开头的字符都将匹配。+表示它是否必须在比赛中。我认为a-means不应该出现。你需要做一点RTFM,因为有一点学习曲线,而且它不是100%直观的。@JustinEyster还有,MySQL文档非常难尝试和学习,所以谷歌搜索其他示例/来源。
SELECT primary_key, searchfield from yourtable where match(searchfield) against ('+someword*' in Boolean mode);