从mysql中的句子中搜索缩写

时间:2017-12-07 08:50:45

标签: mysql

我想列出与缩写相匹配的字词。举个例子,如果我正在搜索 AI 或人工智能,那么它应该列出任何包含“人工智能”作为句子一部分的记录。类似地,当我搜索 MCA 或计算机应用程序大师时,它会列出包含计算机应用程序大师作为句子一部分的所有记录。

假设我的MySQL表是包含TopicID,TopicName,TopicDesc列的“主题”。 示例数据:http://sqlfiddle.com/#!9/77f8df

注意:我被要求在没有额外的表格或列的情况下实现它。

如果需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

要搜索缩写,请将RLIKE与正则表达式一起使用。例如,在搜索" MCA":

SELECT * FROM TOPICS WHERE
    TOPICNAME RLIKE '[[:<:]]M.*[[:<:]]C.*[[:<:]]A.*'
    OR 
    TOPICDESC RLIKE '[[:<:]]M.*[[:<:]]C.*[[:<:]]A.*'

其中[[:<:]]表示单词的开头,.*表示任何文字字符。

请注意,文档中所述的Unicode字符有一些限制,但只要您的文本是英文的,您就可以了。

对于常规文本搜索,请使用LIKE,就像要搜索的文字一样:

SELECT * FROM TOPICS WHERE
    TOPICNAME LIKE '%Master of Computer Application%'
    OR
    TOPICDESC LIKE '%Master of Computer Application%'