Elasticsearch検索詳細(六):テキスト検索

1753 ワード

テキスト検索は、MySQLなどのリレーショナル・データベースの弱点であり、ESの強みです.前の記事ではmatch、termについて言及しましたが、それ以外にmulti_match、match_phraceなど、それぞれの意味は:
matchは、ファジイ検索、正確な単語検索、フレーズ検索など、フィールドからキーワードを取得します.match_phraseフレーズ検索.matchと同様に,1つのフィールドから文字を検索するが,完全なフレーズ検索としていくつかの単語に分割して検索することはできない.match_phrase_prefix略.multi_matchは、複数のフィールドからキーワードを取得する.その他はmatchと同じです.common query_string simple_query_string略.
matchの例
GET /_search
{
    "query": {
        "match" : {
            "message" : "this is a test"
        }
    }
}

複数のフィールドに複数のmatchを書き、外側にmust、must_を付けることができます.notまたはshould.たとえば
GET /_search
{
    "query": {
        "bool": {
            "should": [
                {  "match" : { "title" : "this is a test" } },
                {  "match" : { "content" : "this is a test" } }
            ]
        }
    }
}

multi_matchの例
上の例はmulti_matchの書き方
GET /_search
{
  "query": {
    "multi_match" : {
      "query":    "this is a test",
      "fields": [ "title", "message" ],
      "type": "most_fields"
    }
  }
}

fieldsを省略すると、すべてのフィールドからキーワードが取得されることを示します.typeにはもう一つのよく使われる使い方があります.best_Fieldsは、キーワードが同じフィールドに表示されるドキュメントが高いことを示します.score.
match_phraceの例
match_phraceとmatchの使い方は似ています.違うのは、match_phraceは完全なフレーズを検索します.たとえば、文字「プログラミング言語」を検索し、matchは文字を2つの単語「プログラミング」と「言語」に分解し、一致するドキュメントの2つのキーワードを接続する必要はありません.そしてmatch_phraceはキーワードがつながっていて、ちょうど「プログラミング言語」であることを要求しています.MySQLでクラス比をすると、matchはファジイマッチングに似ていますが、match_phraceは正確なマッチングです.