精确单词搜索中的单字灵活性

时间:2013-10-16 11:53:11

标签: mysql sql

我们正在实施搜索应用程序

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

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

哪个效果很好,现在我们想稍微调整一下 我们希望在前面或后面为用户提供单字灵活性,这样如果用户键入ryans或ryan或sryan,那么系统应该给出保持上述实现的精确单词搜索的结果。

1 个答案:

答案 0 :(得分:0)

set @word='sryan';
SELECT *
FROM (select 'ryan' as a)a
WHERE a like @word
or a like right(@word,length(@word)-1)
or a like left(@word,length(@word)-1)

- &GT; '瑞恩'

set @word='ryan';
SELECT *
FROM (select 'ryan' as a union all select 'bryan' union all select 'yan' union all select 'yankee')a
WHERE a like @word
or a like right(@word,length(@word)-1)
or a like left(@word,length(@word)-1)

- &GT; 'ryan','yan'

    set @word='ryan';
    SELECT *
    FROM (select 'ryan' as a union all select 'bryan' union all select 'yan' union all select 'yankee')a
where 
a REGEXP concat('[[:<:]]',@word,'[[:>:]]')
or
a REGEXP concat('[[:<:]]',left(@word,length(@word)-1),'[[:>:]]')
or
a REGEXP concat('[[:<:]]',right(@word,length(@word)-1),'[[:>:]]')