Elasticsearch検索詳細(六):テキスト検索
1753 ワード
テキスト検索は、MySQLなどのリレーショナル・データベースの弱点であり、ESの強みです.前の記事ではmatch、termについて言及しましたが、それ以外にmulti_match、match_phraceなど、それぞれの意味は:
matchは、ファジイ検索、正確な単語検索、フレーズ検索など、フィールドからキーワードを取得します.
matchの例
複数のフィールドに複数のmatchを書き、外側にmust、must_を付けることができます.notまたはshould.たとえば
multi_matchの例
上の例はmulti_matchの書き方
fieldsを省略すると、すべてのフィールドからキーワードが取得されることを示します.typeにはもう一つのよく使われる使い方があります.best_Fieldsは、キーワードが同じフィールドに表示されるドキュメントが高いことを示します.score.
match_phraceの例
match_phraceとmatchの使い方は似ています.違うのは、match_phraceは完全なフレーズを検索します.たとえば、文字「プログラミング言語」を検索し、matchは文字を2つの単語「プログラミング」と「言語」に分解し、一致するドキュメントの2つのキーワードを接続する必要はありません.そしてmatch_phraceはキーワードがつながっていて、ちょうど「プログラミング言語」であることを要求しています.MySQLでクラス比をすると、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は正確なマッチングです.