sql >> データベース >  >> RDS >> Mysql

MySQL全文検索で使用するためのエスケープ文字列

    ブール検索モードでは、単語と演算子のみが意味を持ちます。演算子は次のとおりです: + -><() *" @distance 。調査の結果、大文字、小文字、数字(数字)、 _という単語の文字が何であるかがわかりました。 。次の2つのアプローチのいずれかを使用できると思います:

    1. 単語以外のすべての文字をスペースに置き換えます(私はこのアプローチを好みます)。これは正規表現で実現できます:

      $search = preg_replace('/[^\p{L}\p{N}_]+/u', ' ', $keyword);
      
    2. 文字演算子をスペースに置き換えます:

      $search = preg_replace('/[+\-><\(\)~*\"@]+/', ' ', $keyword);
      

    全文検索エンジンによって索引付けされ、検索できるのは単語のみです。単語以外の文字はインデックスに登録されないため、検索文字列に残しておくのは意味がありません。

    参照:



    1. 天気アプリのデータモデル

    2. オフラインファーストのネイティブAndroidアプリを開発する方法

    3. WHERE句を使用して、経度と緯度からの距離の範囲内でPOIを検索します

    4. Excelデータから挿入ステートメントを生成してSQLServerテーブルにロードする方法-SQLServer/TSQLチュートリアルパート103