tntsearch
TNT search
์ค์น ๋ฐฉ๋ฒ์ ๊ณต์ ํํ์ด์ง์ ์์ด ์๋ต
N:M๊ด๊ณ์ ๊ด๊ณ ํ
์ด๋ธ ์ ๋ณด๊น์ง ์ธ๋ฑ์ค์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ
toSearchableArray()๋ฉ์๋๋ฅผ ์ด์ฉํด์ index์ ์ ์ฅํ๋ ํํ๋ฅผ ์ ์ ํ ์ ์๋๋ฐ $this->tags->toArray()
์ ๊ฐ์ด ์ฐ๊ด๋ ํ
์ด๋ธ์ ์กฐํํ ์ ์๋ค. N์์ 1์ ๋ถ๋ฌ์ค๋ ๊ฒฝ์ฐ๋ผ๋ฉด ๊ทธ๋๋ก ๋ฐ๋ก ์ ์ฉํด๋ ๋์ง๋ง 1->N ์ด๊ฑฐ๋ N:M๊ด๊ณ์์๋ ์ด์ค๋ฐฐ์ด์ด $tags์ ์ ์ฅ์ด ๋๋ค.
ํ์ง๋ง return๋๋ ๋ฐฐ์ด์ ์ผ์ฐจ์๋ฐฐ์ด์ returnํด์ผ ํ๊ธฐ ๋๋ฌธ์ json_encode()
๋ก ์ผ๊ด ๋ฌธ์์ด์ผ๋ก ๋ฐ๊ฟ๋ฒ๋ ค์ฃผ์ด์ผ ํ๋ค. ์ด๋, implode()๋ฅผ ์ฌ์ฉํ๋ฉด 2์ฐจ์ ๋ฐฐ์ด์ด๊ธฐ ๋๋ฌธ์ convert๊ฐ ๋์ง ์๋๋ค.
๋๋ ์ค์ ๋ก ์ธ๋ชจ์๋ ๋ฐ์ดํฐ๋ tags์ title๋ง index์ ์ ์ฅ๋๋ฉด ๋๊ธฐ ๋๋ฌธ์ foreach๋ฅผ ์ด์ฉํด ๋ฌธ์์ด๋ก serializeํด์ฃผ์ด index์ ์ ์ฅ๋๊ฒ ํด์ฃผ์๋ค.
post๋ฅผ saveํ ๋ index์ ์ ์ฅ๋๋ค๊ณ ๊ณต์๋ฌธ์์์ ๊ทธ๋ฌ์ผ๋ ์ ์ ์ฅ๋๊ฒ ์ง ์ถ๊ฒ ์ง๋ง ์ค์ ๋ก๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
N:M์ ๊ด๊ณ๋ฅผ ์์ ๊ฐ์ด eloquent๋ฅผ ์ด์ฉํด ์ ์ฅํ๋ ค๊ณ ํ๋ค๋ฉด post๋ฅผ ์ ์ฅํ๊ณ tags๋ฅผ ์ ์ฅํ๊ณ ๊ทธ๋ค์์์์ผ post_tag๋ฅผ ์ ์ฅํ๋ค.
๊ทธ๊ฒ ๋ญ๊ฐ ๋ฌธ์ ์ผ ์ถ๊ฒ ์ง๋ง ์ ๋ณด๋ฉด ์ดํดํ ์ ์๋ค. save()์ ๋ณด๋ฉด tags์ ์ฐ๊ด๊ด๊ณ๊ฐ ๋งบ์ด์ง๊ธฐ ์ ์ ํธ์ถ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ index์ tags์ ๋ณด๊ฐ ์ ์ฅ๋์ง ์๋ ๊ฒ์ด๋ค. post์ ์ฅํ๊ธฐ์ ์ tags์ ๊ด๊ณ๋ฅผ ๋งบ์ผ๋ ค๊ณ ํ๋ฉด post๊ฐ ์ ์ฅ๋์ง ์์์ ํ ์ด๋ธid๊ฐ์์ด ๊ด๊ณ๊ฐ ๋งบ์ด์ง์ง ์๋๋ค.
์ด๋๋ ๋ชจ๋ ๋ก์ง์ ์ํํ๊ณ $post->searchable()
์ ์ํํ์ฌ ๋ค์ index์ ์ ์ฅํด์ฃผ๋ฉด๋๋ค. searchable()๋ฉ์๋๋ index์ ์๋ ์ ๋ณด๋ผ๋ฉด ์์ ์ ์๋ค๋ฉด ์ฝ์
์ ์ํํ๋ค. ํ์ง๋ง shouldBeSearchable()
์์ ํํฐ๋ง์ด ๋์ด index์ ์ ์ฅํ์ง ์๊ธฐ๋ก ํ๋ ๋ชจ๋ธ๋ ์ด ๋ฉ์๋๋ฅผ ์ํํ๋ฉด index์ ์ ์ฅ์ด ๋๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ ์ฌ์ฉํด์ผํ๋ค.
N:M ์กฐํ
์์ ๊ฐ์ด ์ค์ ์ ํ๋ค๋ฉด index์๋ ์ ์ฅ์ด ๋์ด search()๋ฉ์๋๋ก ์ ๊ฒ์์ด ๋๋ค. ํ์ง๋ง ์๋์ ๊ฐ์ด ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด ์ฐ๊ดํ ์ด๋ธ ์ ๋ณด๊ฐ ๊ฒ์๋์ง ์๋๋ค.
์ด์ ์ ๋ํด ํ์ฐธ ํค๋งค๋ฉด์ ๊ณ ๋ฏผ์ ํ๋๋ฐ ์ด์ ๋ ๋จ์ํ๋ค. ๋ก์ง์ด index์์ ์ ๋ณด๋ฅผ ์กฐํํด์ ๊ทธ ์ ๋ณด๋ฅผ ๊ทธ๋๋ก ์ถ๋ ฅํด์ฃผ๋ ๊ฒ์ด ์๋๋ผ ๋จผ์ search()๋ฉ์๋์ get()๋ฉ์๋๋ฅผ ํตํด keyword๋ฅผ index์์ ์กฐํํ์ฌ table์ key๋ฅผ ์ฐพ๋๋ค. ๊ทธ๋์ select ์ฟผ๋ฆฌ๊ฐ ํ ๋ฒ ๋ฐ์ํ๋ค.
๋ด์ฉ์ ํ์๋ง tntsearch์ indexํ๋๋ฅผ ์ด์ฉํ์ฌ ๋น ๋ฅด๊ฒ ๊ฒ์ํ ๋ฟ ๊ทธ ์ดํ๋ eloquent์ ์ฌ์ฉ๋ฒ์ด ๊ฐ์ ๊ฒ์ด์๋ค. Eloquent๋ ๊ธฐ๋ณธ์ด ์ง์ฐ๋ก๋ฉ์ด๊ธฐ ๋๋ฌธ์ ์ฐ๊ดํ ์ด๋ธ์ ์ ๋ณด๊ฐ ์๋ ๊ฒ์ด๋ค.
tag์ ๋ณด๊น์ง ์กฐํํ๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ด return๋ฌธ์ ์์ ํด์ฃผ๋ฉด๋๋ค.
load()๋ก tagsํ ์ด๋ธ์ ์กฐํํ์ฌ ๋ฐํํ๋ฉด tag์ ๋ณด๊น์ง ์ ๋ฐํ์ด ๋๋ฉฐ ์ง์ฐ๋ก๋ฉ์ postsํ ์ด๋ธ๊ณผ tags/post_tag ํ ์ด๋ธ์ ์กฐ์ธํ์ฌ ์กฐํํ๊ธฐ ๋๋ฌธ์ select์ฟผ๋ฆฌ๊ฐ ํ๋ฒ ๋ ๋ฐ์ํ๋ค.
Last updated