59.1. Ðведение
GIN ÑаÑÑиÑÑовÑваеÑÑÑ ÐºÐ°Ðº «Generalized Inverted Index» (ÐбобÑÑннÑй инвеÑÑиÑованнÑй индекÑ). GIN пÑедназнаÑаеÑÑÑ Ð´Ð»Ñ ÑлÑÑаев, когда индекÑиÑÑемÑе знаÑÐµÐ½Ð¸Ñ ÑвлÑÑÑÑÑ ÑоÑÑавнÑми, а запÑоÑÑ, на обÑабоÑÐºÑ ÐºÐ¾ÑоÑÑÑ ÑаÑÑÑиÑан индекÑ, иÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑлеменÑов в ÑÑÐ¸Ñ ÑоÑÑавнÑÑ Ð¾Ð±ÑекÑÐ°Ñ . ÐапÑимеÑ, Ñакими обÑекÑами могÑÑ Ð±ÑÑÑ Ð´Ð¾ÐºÑменÑÑ, а запÑоÑÑ Ð¼Ð¾Ð³ÑÑ Ð²ÑполнÑÑÑ Ð¿Ð¾Ð¸Ñк докÑменÑов, ÑодеÑжаÑÐ¸Ñ Ð¾Ð¿ÑеделÑннÑе Ñлова.
ÐдеÑÑ Ð¼Ñ Ð¸ÑполÑзÑем ÑеÑмин обÑекÑ, говоÑÑ Ð¾ ÑоÑÑавном знаÑении, коÑоÑое индекÑиÑÑеÑÑÑ, и ÑеÑмин клÑÑ, говоÑÑ Ð¾ вклÑÑÑнном в него ÑлеменÑе. GIN вÑегда Ñ ÑÐ°Ð½Ð¸Ñ Ð¸ иÑÐµÑ ÐºÐ»ÑÑи, а не обÑекÑÑ ÐºÐ°Ðº ÑаковÑе.
ÐÐ½Ð´ÐµÐºÑ GIN ÑÐ¾Ñ ÑанÑÐµÑ Ð½Ð°Ð±Ð¾Ñ Ð¿Ð°Ñ (клÑÑ, ÑпиÑок иденÑиÑикаÑоÑов), где ÑпиÑок иденÑиÑикаÑоÑов ÑодеÑÐ¶Ð¸Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ ÑÑÑок, в коÑоÑÑÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÐºÐ»ÑÑ. Ðдин и ÑÐ¾Ñ Ð¶Ðµ иденÑиÑикаÑÐ¾Ñ ÑÑÑоки Ð¼Ð¾Ð¶ÐµÑ ÑигÑÑиÑоваÑÑ Ð² неÑколÑÐºÐ¸Ñ ÑпиÑÐºÐ°Ñ , Ñак как обÑÐµÐºÑ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð±Ð¾Ð»ÑÑе одного клÑÑа. ÐнаÑение каждого клÑÑа Ñ ÑаниÑÑÑ ÑолÑко один Ñаз, Ñак ÑÑо Ð¸Ð½Ð´ÐµÐºÑ GIN оÑÐµÐ½Ñ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑен в ÑлÑÑаÑÑ , когда один клÑÑ Ð²ÑÑÑеÑаеÑÑÑ Ð¼Ð½Ð¾Ð³Ð¾ Ñаз.
GIN ÑвлÑеÑÑÑ Ð¾Ð±Ð¾Ð±ÑÑннÑм в Ñом ÑмÑÑле, ÑÑо код меÑода доÑÑÑпа GIN не должен знаÑÑ Ð¾ конкÑеÑнÑÑ Ð¾Ð¿ÐµÑаÑиÑÑ , коÑоÑÑе он ÑÑкоÑÑеÑ. ÐмеÑÑо ÑÑого задаÑÑÑÑ ÑпеÑиалÑнÑе ÑÑÑаÑегии Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑеÑнÑÑ Ñипов даннÑÑ . СÑÑаÑÐµÐ³Ð¸Ñ Ð¾Ð¿ÑеделÑеÑ, как извлекаÑÑÑÑ ÐºÐ»ÑÑи из индекÑиÑÑемÑÑ Ð¾Ð±ÑекÑов и ÑÑловий запÑоÑов, и как ÑÑÑановиÑÑ, дейÑÑвиÑелÑно ли ÑдовлеÑвоÑÑÐµÑ Ð·Ð°Ð¿ÑоÑÑ ÑÑÑока, ÑодеÑжаÑÐ°Ñ Ð½ÐµÐºÐ¾ÑоÑÑе знаÑÐµÐ½Ð¸Ñ ÐºÐ»ÑÑей.
ÐлÑÑевÑм пÑеимÑÑеÑÑвом GIN ÑвлÑеÑÑÑ Ñо, ÑÑо он позволÑÐµÑ ÑазÑабаÑÑваÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ Ñ ÑооÑвеÑÑÑвÑÑÑими меÑодами доÑÑÑпа ÑкÑпеÑÑам в пÑедмеÑной облаÑÑи Ñипа даннÑÑ , а не ÑпеÑиалиÑÑам по СУÐÐ. Ð ÑÑом аÑпекÑе он Ð¿Ð¾Ñ Ð¾Ð¶ на GiST.
СопÑовождением ÑеализаÑии GIN в Postgres Pro в оÑновном занимаÑÑÑÑ Ð¤ÑÐ´Ð¾Ñ Ð¡Ð¸Ð³Ð°ÐµÐ² и Ðлег ÐаÑÑÑнов. ÐополниÑелÑнÑе ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ GIN можно полÑÑиÑÑ Ð½Ð° Ð¸Ñ ÑайÑе.