์๋ ํ์ธ์,
ํน์ ๋ชจ๋ธ์ ๋ํด toSearchableArray
๋ฅผ ์์ฑํ ๋ ์ต์ข
๋ฐฐ์ด์ ID
ํฌํจ๋์ด ์์ง ์์ผ๋ฉด php artisan scout:import "App\Book"
์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ID
๋ฅผ ํฌํจํ๋ฉด ID
๋ก๋ ๊ฒ์ํ ์ ์๊ฒ ๋๋ฉฐ, ์ด๋ ์ ๊ฐ ํ์ถํ๊ณ ์ถ์ ํ๋์
๋๋ค. ID
๊ฒ์์ ๋นํ์ฑํํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น?
์์ ์ฝ๋:
public function toSearchableArray()
{
$array = $this->toArray();
foreach(array_keys($array) as $key) {
//if I unset ID also, I won't be able to import table data
if(in_array($key, ['id', 'title', 'name'])) continue;
unset($array[$key]);
}
return $array;
}
์๋ ํ์ธ์ @milosevicn ,
->toSearchableArray()
๋ ํน์ ๋ฌธ์(๊ฐ์ฒด)์ ๋ํด MeiliSearch ๋ด์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ํฉ๋๋ค. id
์๋ตํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก id
๊ฐ ๋ฌธ์ ์๋ณ์ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ํค์ด๊ธฐ ๋๋ฌธ์ ๊ฒ์ ๋ด์์ ๊ฒ์ํ ์ ์๋ ์์๊ฐ ๋ฉ๋๋ค.
MeiliSearch๊ฐ ๋ชจ๋ ํ๋๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ค๋ฉด ์ด ํจํค์ง์ ๊ธฐ๋ฅ์ ํ์ฅํ๊ณ MeiliSearch ๋ด์์ searchAttributes
์ค์ ํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. ์ฌ๊ธฐ ์์ ์ด๋ฅผ ์ํํ๋ ์์ต์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
@mmachatschek ๋ฒ๊ฑฐ๋กญ๊ฒ ํด์ ์ฃ์กํฉ๋๋ค. ํ์ง๋ง ์ด์ ๋ํ ์ ํธ๋ฅผ ์ด๊ณ ์ถ์ง๋ ์์์ต๋๋ค. ๋ด ์ง๋ฌธ๊ณผ ๊ด๋ จ์ด ์์ ์ ์์ต๋๋ค.
php artisan scout:import
๋ช
๋ น์ ์ฌ์ฉํ์ฌ ๋ฌธ์๋ฅผ ์ถ๊ฐํ ๋ ๋ชจ๋ ๊ฒ์ด ์์๋๋ก ์๋ํ์ง๋ง /indexes/:index_uid/documents
route( ->addDocuments()
)๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ ์์
์ ์ํํ ๋ toSearchableArray()
๊ท์น. ๋ฐ๋ผ์ ์ ์ฒด ๋ชจ๋ธ์ ์ถ๊ฐํ๋ ค๊ณ ํ๋ฉด ๋ชจ๋ ์ด์ด ์ถ๊ฐ๋ฉ๋๋ค.
์ฟผ๋ฆฌ๋ฅผ ์ํํ๋ ๋์ ํน์ ์ด์ ์ ํํ์ฌ ์ด๋ฅผ ๊ทน๋ณตํ ์ ์์ง๋ง addDocuments()
ํจ์ ์์ฒด๊ฐ toSearchableArray()
์ธ์ํ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์๋ ํ์ธ์ @milosevicn ,
์ด ํจํค์ง๋ ๊ธฐ๋ณธ์ ์ผ๋ก MeiliSearch PHP ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํผ์ด๋ฉฐ Laravel Scout๋ฅผ ํ์ฅํฉ๋๋ค.
๋ฌธ์๋ฅผ "์๋์ผ๋ก" ์ถ๊ฐํ ๋ Scout๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ๋ง๋ฒ(์: ์ธ๋ฑ์ค์ ์ ๊ฐ์ฒด ์ถ๊ฐ ๋๋ ํน์ ํ๋๋ก ๊ธฐ์กด ๊ฐ์ฒด ์ ๋ฐ์ดํธ ๋ฑ)์ ํด๋น ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ๊ธฐ ๋๋ฌธ์ ์์ค๋ฉ๋๋ค.
๋ฌธ์๋ฅผ ์๋์ผ๋ก ์ถ๊ฐํ๋ ค๋ ํน๋ณํ ์๋๊ฐ ์์ต๋๊น?
@mmachatschek ์ ์๋ต
๋ฉํฐํ ๋์ ์ฑ์ด ์์ต๋๋ค. ๋ ๊ฐ์ ๊ฐ๋ณ ์ฑ(์ง์ฃผ์ธ ๋ฐ ์ธ์ ์)์ด ์์ต๋๋ค. ์ด ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌด์ธ๊ฐ๊ฐ ์ถ๊ฐ๋๋ฉด ์ฌ์ ์ ์๋ Laravel Scout ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ๊ทธ๋์ ์นํ ์ ์ฌ์ฉํ์ฌ ์ค์ ๋ก ์ง์ฃผ์ธ(์์ฑ/์ ๋ฐ์ดํธ/์ญ์ )์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ด๋ค ์ผ์ด ๋ฐ์ํ์ ๋ ํ ๋ํธ ์ฑ์ ์๋ฆฌ๊ณ ์์ต๋๋ค. ํ ๋ํธ์์ ์นํ ์ ์ก์ผ๋ฉด ํด๋น ๋ฌธ์๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค.
@milosevicn $model->touch()
ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ธ์ updated_at ์ด์ด ์
๋ฐ์ดํธ๋๊ณ ํ
๋ํธ ์ฑ์์ updated
์ด๋ฒคํธ๊ฐ ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด Scout ์ด๋ฒคํธ ๋ฆฌ์ค๋๊ฐ ์ธ๋ฑ์ค์ ๋ํ ์
๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค. ์ด๊ฒ์ด ๋น์ ์๊ฒ ๋์์ด ๋ ๊น์?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์ @milosevicn ,
->toSearchableArray()
๋ ํน์ ๋ฌธ์(๊ฐ์ฒด)์ ๋ํด MeiliSearch ๋ด์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ํฉ๋๋ค.id
์๋ตํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋กid
๊ฐ ๋ฌธ์ ์๋ณ์ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ํค์ด๊ธฐ ๋๋ฌธ์ ๊ฒ์ ๋ด์์ ๊ฒ์ํ ์ ์๋ ์์๊ฐ ๋ฉ๋๋ค.MeiliSearch๊ฐ ๋ชจ๋ ํ๋๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ค๋ฉด ์ด ํจํค์ง์ ๊ธฐ๋ฅ์ ํ์ฅํ๊ณ MeiliSearch ๋ด์์
searchAttributes
์ค์ ํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. ์ฌ๊ธฐ ์์ ์ด๋ฅผ ์ํํ๋ ์์ต์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.