2017-12-07 8 views
0

略語と一致する単語をリストしたいと思います。たとえば、AIまたはArtificial Intelligenceを検索している場合は、「Artificial Intelligence」が文章の一部として含まれているレコードを表示する必要があります。同様にMCAまたはコンピュータアプリケーションのマスターを検索すると、コンピュータアプリケーションのマスターを含むすべてのレコードが文の一部としてリストされます。mysqlの文章から略語を検索する

私のMySQLテーブルがTopicID、TopicName、TopicDescの列を持つトピックであると仮定します。 サンプルデータ:http://sqlfiddle.com/#!9/77f8df

注:テーブルやカラムを追加することなく達成するように求められました。

詳細情報が必要な場合は教えてください。

+0

これは、全文検索を介して配信されるべき機能の一種です。 Mysql InnoDBエンジンにはその機能があります。 [詳細はこちら](https://dev.mysql.com/doc/refman/5.7/en/)。しかし、それはMysqlが根本的にステミングやカスタマイズ可能なシソーラスをサポートしているようには見えないので、あなたはこのようにして達成できるものは少し限られているかもしれません。しかし、周りに遊んで、それはあなたのために働くかもしれません。 – APC

答えて

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%' 
関連する問題