Elastic Search

[Elastic Search] Query ์Šคํ„ฐ๋””-1ํŽธ Match, Match Phrase

Tempo 2022. 1. 27. 20:52

์ธ๋ฑ์Šค ์„ค๋ช…

ํ˜„์žฌ review ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜์˜€๊ณ , review ์ธ๋ฑ์Šค์˜ ํ•„๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

"mappings": {
    "properties": {
        "prd_id": {
            "type": "text"
        },
        "review_id": {
            "type": "text"
        },
        "review": {
            "type": "text"
        },
        "genders": {
            "type": "rank_features"
        }
    }
}

๋งค์นญ ์ฟผ๋ฆฌ

์ „๋ฌธ(Full-text query) ์ฟผ๋ฆฌ๋กœ Match ํ‚ค์›Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ์ฟผ๋ฆฌ์ด๋‹ค.

match์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒ€์ƒ‰์–ด๋„ ํ† ํฐํ™”๊ฐ€ ๋˜์–ด ๊ฒ€์ƒ‰ํ•œ๋‹ค. ์ €์žฅ๋œ ์›๋ฌธ ์—ญ์‹œ ํ† ํฐํ™” ๋˜์–ด ์ €์žฅ๋˜์–ด ์žˆ์–ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•˜๋‚˜์˜ ์šฉ์–ด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ์ฟผ๋ฆฌ

GET review/_search
{
  "_source": ["review"],
  "query": {
     "match": {
       "review": {
          "query": "์˜ค๋ฒ„ํ•"
        }
     }
  }
}

ํ•˜๋‚˜์˜ ์šฉ์–ด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ์ฟผ๋ฆฌ์—์„œ ํ‚ค์›Œ๋“œ ์‚ฌ์ด์— ๊ณต๋ฐฑ์ด ์žˆ๋‹ค๋ฉด or๋กœ ์ธ์‹, ํ† ํฐํ™” ๋˜์–ด ๊ฒ€์ƒ‰๋œ๋‹ค.

GET review/_search
{
  "_source": ["review"],
  "query": {
    "match": {
      "review": {
        "query": "์˜ค๋ฒ„ํ• ๋งจํˆฌ๋งจ"
      }
    }
  }
}

๋งŒ์•ฝ and ์กฐ๊ฑด์œผ๋กœ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์•„๋ž˜ ์ฒ˜๋Ÿผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

GET review/_search
{
  "_source": ["review"],
  "query": {
    "match": {
      "review": {
        "query": "์˜ค๋ฒ„ํ• ๋งจํˆฌ๋งจ",
        "operator": "and"
      }
    }
  }
}

๋งค์น˜ ํ”„๋ ˆ์ด์ฆˆ ์ฟผ๋ฆฌ(Match-Phrase)

๊ตฌ(phrase)๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ์ฟผ๋ฆฌ์ด๋‹ค. ์ฆ‰, 2๊ฐœ ์ด์ƒ์˜ ๋‹จ์–ด๊ฐ€ ์—ฐ๊ฒฐ๋œ ๋ฌธ๊ตฌ๋ฅผ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

์ด๋Š” ๋‹จ์–ด ์ˆœ์„œ๊นŒ์ง€ ๊ณ ๋ คํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์ถ”์ถœํ•œ๋‹ค.

์˜ˆ) ๋นจ๊ฐ„ ๋ฐ”์ง€, ๋ฐ”์ง€ ๋นจ๊ฐ„์ƒ‰์€ ๊ฒ€์ƒ‰ ์˜๋„๊ฐ€ ์ „ํ˜€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

// ์ด์œ ๋งจํˆฌ๋งจ
GET review/_search
{
  "_source": ["review"],
  "query": {
    "match_phrase": {
      "review": "์ด์œ ๋งจํˆฌ๋งจ"
    }
  }
}

๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ

"review" : "์ด์œ ๋งจํˆฌ๋งจ ์ ๋‹นํ•˜๊ฒŒ ์ž˜ ์ƒ€๋„ค์š”. ์ด์œ์ƒํ’ˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค."
"review" : "๋•Œ์— ๋งž๋Š” ๋งจํˆฌ๋งจ์ด๋„ค์š”ใ…Žใ…Žใ…Ž ์ด์œ ๋งจํˆฌ๋งจ ์ €๋ ดํ•˜๊ฒŒ ๊ตฌ์ž…ํ•˜๊ณ  ๊ฐ€์„œ ์ข‹์Šต๋‹ˆ๋‹ค~~"
//๋งจํˆฌ๋งจ ์ด์œ
GET review/_search
{
  "_source": ["review"],
  "query": {
    "match_phrase": {
      "review": "๋งจํˆฌ๋งจ ์ด์œ"
    }
  }
}

๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ

"review" : "ํŒŒ์Šคํ…”ํ†ค ๋งจํˆฌ๋งจ ์ด์œ ๋น„๋ฐ”์ŠคํŠœ๋””์˜ค ๊ฐ•์ถ”ํ•ฉ๋‹ˆ๋‹ค"
"review" : "๊ทธ๋ƒฅ ์ง„์งœ ๋ฌด๋‚œํ•œ ๋งจํˆฌ๋งจ ์ด์œ ์•„์šฐํ„ฐ ์ด๋„ˆ๋กœ ์ž…๊ธฐ ์ ๋‹น"

๐Ÿ”ฅ ์šฉ์–ด(term) ์ฟผ๋ฆฌ๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋‹ˆ, ํ˜„์žฌ ์„ค์ •ํ–ˆ๋˜ ํ•„๋“œ ํƒ€์ž…์ด ๋งž์ง€ ์•Š์•˜๋‹ค. ๋ชจ๋‘ text ํƒ€์ž…์œผ๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ…์ŠคํŠธ ๋‚ด ํ‚ค์›Œ๋“œ๋ฅผ ๊ฐœ๋ณ„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๋™์ž‘ํ•˜์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ ๊ธฐํšŒ์— nori-filter๋ฅผ ์ ์šฉํ•˜๊ฑฐ๋‚˜ text ๋‚ด๋ถ€์— keyword ํ•„๋“œ๋ฅผ ์ ์šฉํ•˜๋Š” ์—ฐ์Šต์„ ํ•ด์•ผ๊ฒ ๋‹ค!

๋ฐ˜์‘ํ˜•