Elasticsearch ๋ "text" ๋ก ๋งคํ๋ ํ๋์ ๊ฒฝ์ฐ ๊ทธ ์์ ๋ฐ์ดํฐ๋ฅผ Inverted Index ๋ผ๋ ๊ตฌ์กฐ๋ก ์ ์ฅํฉ๋๋ค.
์ง์ญํ์๋ฉด ์ญ ์์ธ, ๋ฐ๋ ์์ธ ์ด๋ฐ ๋ป์ธ๋ฐ ๋์ถฉ ๊ฐ์ด ์ค์๋์??
์๋ค ๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
์๋์ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๊ณ ํฉ์๋ค.
Id | Description |
---|---|
1 | "Cat is Cute" |
2 | "Dog is Cute Too" |
3 | "Cat is lazy" |
4 | "Dog is super athletic" |
์ผ๋ฐ์ ์ธ DBMS ์์๋ "athletic" ์ ๊ฒ์ํ๊ณ ์ถ๋คํ๋ฉด 1๋ฒ ,2๋ฒ, 3๋ฒ, 4๋ฒ ์์๋ก ๊ฒ์ํด์
"athleti" ์ด ์๊ตฌ๋ Id 4๋ฅผ ๋ณด์ฌ์ค์ผ์ง. ๋ผ๊ณ ํ ๊ฒ๋๋ค.
Inverted Index ๋ ์กฐ๊ธ ๋ค๋ฆ
๋๋ค.
ํ ํฐ๋ง๋ค ๊ฐ์ ๊ฐ์ง๋๋ฐ, ์ด ๊ฐ์ "์ด ๋ฌธ์์ ์ด ํ ํฐ ๊ฐ์ด ํฌํจ๋์ด ์์ด."๋ฅผ ์ ์ฅํฉ๋๋ค.
์์ ํ
์ด๋ธ์ ์๋์ ๊ฐ์ ์์ผ๋ก ์ ์ฅํฉ๋๋ค.
Token | Id |
---|---|
"cat" | 1, 3 |
"dog" | 2, 4 |
"cute" | 1, 2 |
"lazy" | 3 |
"athletic" | 4 |
"super" | 4 |
์ด ๊ฐ์ ๊ฒฝ์ฐ "athletic" ํ ํฐ์ด ํฌํจ๋ 4๋ฒ ๋ฌธ์๋ง ๋ณด๋ฉด ๋ฉ๋๋ค. ๋ค๋ง ํ ํฐ์ ๋นจ๋ฆฌ ์ฐพ๊ธฐ ์ํด ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ๋ ์ข ๋ณต์กํด์ง๊ฒ๋๋ค.
๊ด์ฐฎ์ต๋๋ค. Elasticsearch ๊ฐ ๋์ ํด์ค๊ฑฐ๊ฑฐ๋ ์!!
๐๐ ๋จ ์ด๋ ๊ฒ ์ ์ฅ๋๋ ๊ฑด ์ค์ง ํ๋๊ฐ text ํ์
์ผ ๋๋ง ์ ์ฉ๋ฉ๋๋ค.
๋ค๋ฅธ๋ง๋ก ํ์๋ฉด text ํ๋๊ฐ ์๋๋ฉด ์ ๋ฌธ๊ฒ์ ๊ธฐ๋ฅ์ ์ธ ์ ์์ต๋๋ค!!
์์ ์์์์ ๋์น์ฑ์ ๋ถ๋ ๊ณ์๊ฒ ์ง๋ง, ์ฒ์ ํ
์ด๋ธ์ ๋ด์ฉ์ Inverted Index ๋ฐฉ๋ฒ์ผ๋ก ์ ์ฅํ ๋ ์ ๋ถ ์๋ฌธ์๋ก ๋ฐ๋์ด์ ์ ์ฅ์ด ๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์ฅ๋์ง ์์ ๋จ์ด๋ค๋ ์๊ตฐ์. ์ด ๊ณผ์ ์ Text Analysis ๋ผ๊ณ ํฉ๋๋ค.
์ด ๊ณผ์ ์ ๊ฑฐ์น์ง ์๊ณ ์งํํ๊ฒ ๋๋ฉด ๊ฒ์์ ํ์ ์๋๋จ์ด ๊ฐ๋ น "is", "too" ๊น์ง ์ ์ฅํด์ผํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ "dOG" ๋ผ๊ณ ๊ฒ์ํด๋ "Dog" ๊ฐ ํฌํจ๋ ๋ฌธ์๋ฅผ ๋ณด๊ณ ์ถ๋ค๋ฉด ํ ํฐํํ๋ ๊ณผ์ ์ ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ์ํํด์ผํฉ๋๋ค.
Character Filter ๋ ์ ์ฒ๋ฆฌ๊ณผ์ ์์ ๊ฐ์ฅ ๋จผ์ ์ํ๋๋ ๊ณผ์ ์
๋๋ค.
Character Filter ์๋ HTML Strip, Mapping, Pattern Replace ์ธ ๊ฐ์ง๊ฐ ์กด์ฌํฉ๋๋ค.
<p>I'm so <b>happy</b>!</p>
๋ผ๋ ๋ฌธ์ฅ์ I'm so happy!
๋ก ๋ฐ๊ฟ์ค๋๋ค.Tokenizer Filter ๋ ๋ฌธ์์ด์ ๋ฐ์ ๋จ์ด๋ค์ ํ ํฐํํ๋ ๊ณผ์ ์
๋๋ค.
Tokenizer Filter ๋ ๋ง์ ์ข
๋ฅ๊ฐ ์๋๋ฐ ๋ํ์ ์ธ 3๊ฐ์ง๋ฅผ ๋จผ์ ์์๋ณด๊ฒ ์ต๋๋ค.
Brown-Foxes dog's
๊ฐ์ ๋ฌธ์์ด์ [Brown, Foxes, dog, s] ๋ก ํ ํฐํ๋ฅผ ์ํํฉ๋๋ค.Email, URL, Path ์ ํน์ ๋ชฉ์ ์ฉ Tokenizer ๋ค์ด ๋ง์ผ๋ ์์ธํ ์ ๋ณด๋ Tokenizer Document ๋ฅผ ์ฐธ์กฐํด์ฃผ์์์.!!
Token Filter ๋ ๊ฐ Tokenizer Filter ์ ์ํด ๋ง๋ค์ด์ง Token ๋ค์ ๋ํ ํ์ฒ๋ฆฌ ์์
์ ์ํํฉ๋๋ค.
๊ฐ์ฅ ๋ํ์ ์ธ Lowercase Token Filterr ๋ก Stop Token Filterr ๊ฐ ์์ต๋๋ค.
๋ ๋ง์ Token filter ๋ฅผ ๋ณด๊ณ ์ถ์ผ๋ฉด Token Filters ๋ฅผ ์ฐธ์กฐํด์ฃผ์ธ์!! ์ค๋ฅธ์ชฝ ๋ฉ๋ด๋ฐ์ ๋ค์ํ Token filters ๊ฐ ์์ต๋๋ค.
๋ํ ๊ฐ ํ ํฐ๋ค์ ๊ทธ ์ํ์ ์ ์งํ ํ์๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด working
์์ ing
๋ ํ์ ์๋ ๋ถ๋ถ์ด๋ฉฐ ์ฐ๋ฆฌ๋ work ๋ง ๊ฒ์ํ๋ฉด ๋ฉ๋๋ค.
์ด๋ฌํ ๊ณผ์ ์ Stemming ์ด๋ผ๊ณ ํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ๋ฌธ์์ ์์ด๋ง ์ฐ๋ ๊ฒ์ ์๋๋๋ค. ๋๋ถ๋ถ ๊ทธ ๋๋ผ์์๋ ๊ทธ ๋๋ผ ์ธ์ด๋ฅผ ๋ง์ด ์ธ ๊ฒ์
๋๋ค.
ElasticSearch ์ ๋ด์ฅ๋ ์ธ์ด๋ถ์๊ธฐ๊ฐ ์๋ค๋ฉด, Full-Text-Search ์ ๋ํญ์ ๊ฒช์์ง๋ ๋ชจ๋ฆ
๋๋ค.
๋คํ์ด๋ ํ๊ธ์ ๊ฒฝ์ฐ๋ Nori ํ๊ธ ํํ์ ๋ถ์๊ธฐ๋ฅผ ์ด์ฉํ์ฌ ์ด ๊ณผ์ ์ ์ํํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ Elasticsearch Document ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์!! Nori Analysis Plugin ๊ตฌ๊ฒฝํ๊ธฐ
์ ๊ณผ์ ์ ํตํด ์ ์ฅ๋ ํ ํฐ๋ค์ ํตํด Search API ๊ธฐ๋ฅ๋ค์ ์ํํฉ๋๋ค.
๋ค์์๋ query ๋ฅผ ํตํด ์ค์ ์์ ๋ก ์ฐพ์๋ต๊ฒ ์ต๋๋ค.
ํผ๋๋ฐฑ์ ํญ์ ํ์์ ๋๋ค.