当前位置: 首页 > 面试题库 >

精确单词搜索中允许出现一个字母错误

解宏扬
2023-03-14
问题内容

我们正在实现一个搜索应用程序

我们通过以下sql查询实现了精确的词搜索

SELECT *
FROM jreviews_content
WHERE jr_produits REGEXP '[[:<:]]ryan[[:>:]]'

现在效果很好,我们在某些字段中还有另一个要求,即在jr_title字段中,如果用户填写了一封丢失的字母或一个字母的错误或一个额外的字母,例如,如果用户键入restauran,restaunts或restaurants,则应该给出结果,但不超过一个字母。


问题答案:

这将在搜索字符串之前允许一个字母数字字符,在搜索字符串之后允许一个字符:

SELECT *
FROM jreviews_content
WHERE jr_produits REGEXP '[[:<:]][[:alnum:]]{0,1}ryan[[:alnum:]]{0,1}[[:>:]]'

如果要在搜索字符串之前允许一个字母数字字符或在搜索字符串之后允许一个字母数字字符,则可以改用以下方式:

SELECT *
FROM jreviews_content
WHERE
  jr_produits REGEXP '[[:<:]][[:alnum:]]{0,1}ryan[[:>:]]'
  OR jr_produits REGEXP '[[:<:]]ryan[[:alnum:]]{0,1}[[:>:]]'


 类似资料:
  • 我有一个这样设置的索引: 几个重要字段的字段映射设置如下: 当我询问名字时。对字段进行分析后,它适用于至少包含两个字符的任何内容。例如,查询“Ra”将在名称字段中找到带有“Rafael”的文档。然而,当我查询“R”或“Rafael S”时,它不会返回任何结果。应该注意的是,在我们的查询中,空格被处理为“AND”操作符,而不是“OR”,因此基本上查询词被处理为“name contains[searc

  • 问题内容: 我正在尝试用JavaFX制作数独游戏,但我不知道如何只允许输入一个字母。对此的答案是调用文本字段并执行以下操作: 上面的方法不适用于复制粘贴…或大量其他事情,等等。像这样使用按键监听器似乎是一个AWFUL想法。一定有更好的东西吗?是否存在文本字段的属性,仅允许输入某些字符,或仅允许输入一定数量的字符? 谢谢! 问题答案: 您可以使用来执行此操作。该可以修改都在文本字段做,如果有一个与之

  • 问题内容: 我必须匹配一个8字符串,该字符串可以包含正好2个字母(1个大写字母和1个小写字母)以及正好6个数字,但是它们可以任意排列。 因此,基本上: K82v6686将通过 3w28E020会通过 1276eQ900会失败(时间太长) 98Y78k9k会失败(三个字母) A09B2197将会失败(两个大写字母) 我尝试使用正向前瞻来确保该字符串包含数字,大写和小写字母,但是在将其限制为一定数目的

  • 问题内容: 我第一次使用Postgresql,并且试图在我的网站中创建一个搜索引擎。我有这张桌子: 然后我为表的每个字段创建了一个索引(这是正确的方法吗?或者我可以为所有字段创建一个索引?): 现在,如果我想在每个索引中搜索一个单词,SQL查询是什么? 我尝试了这个,它的工作原理: 是否存在更好的方法来做到这一点?我可以搜索多个吗?我的一个朋友提出了一个解决方案,但这是针对MySQL数据库的: P

  • 问题内容: 我有一个表,其中包含类似单词的列表: 所以我想如果有人写像 “ hela iam正在为gogle寻找类似引擎”。 现在,我想检查数据库中是否存在每个单词,如果不存在,应该使我得到与该单词相似的单词。例如:。好吧,我想修复拼写错误。在我的数据库中,我有所有英语单词的完整词典。我找不到任何对我有帮助的mysql函数。对我的情况没有帮助。 问题答案: 有一个功能确实可以满足您的要求,但是它很