Да бисте разумели концепт претраживања целог текста, морате да се сетите знања о претраживању образаца помоћу кључне речи ЛИКЕ. Дакле, претпоставимо табелу „особа“ у „тесту“ базе података са следећим записима у њој.
>> ОДАБЕРИ * ОД особе;
Претпоставимо да желите да преузмете записе ове табеле, где ступац 'име' има знак 'и' у било којој од својих вредности. Испробајте доњи СЕЛЕЦТ упит док користите клаузулу ЛИКЕ у командној љусци. Из доњег излаза можете видети да имамо само 5 записа за овај одређени знак „и“ у колони „име“.
>> ОДАБЕРИТЕ * ОД особе ГДЕ име КАО „% и% ';
Употреба Твсецтора:
Понекад није корисно користити кључну реч ЛИКЕ за брзо претраживање образаца, иако је реч ту. Можда бисте размислили о коришћењу стандардних израза, и иако је ово изводљива алтернатива, регуларни изрази су и јаки и троми. Имати процедурални вектор за читаве речи у тексту, општи опис тих речи, много је ефикаснији начин за решавање овог проблема. Концепт потпуне претраге текста и типа података тсвецтор створен је да одговори на њега. Постоје две методе у ПостгреСКЛ-у које раде управо оно што ми желимо:
- То_твсецтор: Користи се за израду листе токена (тс значи за „претрагу текста“).
- То_тскуери: Користи се за претрагу вектора ради учесталости одређених термина или фраза.
Пример 01:
Почнимо са једноставном илустрацијом стварања вектора. Претпоставимо да желите да направите вектор за низ: „Неки људи имају коврџаву смеђу косу правилним четкањем.”. Дакле, морате написати функцију то_твсецтор () заједно са овом реченицом у заградама СЕЛЕЦТ упита као што је приложено доле. Из доњег излаза можете видети да би дао вектор референци (позиције датотеке) за сваки токен, а такође и тамо где се појмови са мало контекста, попут чланака (и) и везника (и, или), намерно игноришу.
>> ОДАБЕРИТЕ то_тсвецтор ('Неки људи имају коврџаве смеђе длаке правилним четкањем');
Пример 02:
Претпоставимо да имате два документа са по неким подацима у оба. Да бисмо сачували ове податке, сада ћемо користити стварни пример генерисања токена. Претпоставимо да сте креирали табелу „Подаци“ у својој бази података „тест“ са неколико колона у њој користећи доњи упит ЦРЕАТЕ ТАБЛЕ. Не заборавите да у њему направите колону типа ТВСЕЦТОР под називом „токен“. Из доњег резултата можете погледати табелу која је креирана.
>> СТВОРИ ТАБЕЛУ података (ИД ПРВЕНИ КЉУЧ СЕРИЈСКОГ, ТЕКСТ информација, токен ТСВЕЦТОР);
Сада се претвара да у ову табелу додамо укупне податке оба документа. Зато покушајте да урадите доњу наредбу ИНСЕРТ у љусци командне линије. Коначно, записи из оба документа успешно су додати у табелу „Подаци“.
>> ИНСЕРТ ИНТО Дата (инфо) ВАЛУЕС ('Две грешке никада не могу исправити једну.'), (' Он је тај који може да игра фудбал.'), (' Могу ли да играм улогу у овоме?'), (' Не може се разумети бол у човеку '), (' Донеси брескву у свој живот);
Сада морате колонизовати колону токена оба документа са њиховим одређеним вектором. На крају, једноставни УПДАТЕ упит ће попунити колону токена њиховим одговарајућим вектором за сваку датотеку. Дакле, морате извршити наведени доњи упит у командној љусци да бисте то урадили. Резултат показује да је ажурирање коначно извршено.
>> АЖУРИРАЊЕ података ф1 СЕТ токен = то_тсвецтор (ф1.инфо) ИЗ података ф2;
Сад кад смо све то поставили на место, вратимо се на скенирање илустрације „може ли неко“. То_тскуери са оператором АНД, као што је претходно речено, не прави разлику између локација датотека у датотекама, као што је приказано из резултата наведеног у наставку.
>> ОДАБЕРИТЕ Ид, информације ИЗ података ВХЕРЕ токен @@ то_тскуери ('цан & оне');
Пример 04:
Да бисмо пронашли речи које су „једна до друге“, покушаћемо са истим упитом са „<->'оператер. Промена је приказана у доњем излазу.
>> ОДАБЕРИТЕ Ид, информације ОД података ГДЕ жетон @@ то_тскуери ('цан <-> једно');
Ево примера да нема непосредне речи поред друге.
>> ОДАБЕРИТЕ Ид, информације ОД података ВХЕРЕ токен @@ то_тскуери ('оне <-> бол ');
Пример 05:
Пронаћи ћемо речи које се не налазе непосредно једна поред друге користећи број у оператору даљине за референцирање удаљености. Удаљеност између „донеси“ и „живота“ је 4 речи, осим приказане слике.
>> СЕЛЕЦТ * ФРОМ Дата ВХЕРЕ токен @@ то_тскуери ('донесе <4> живот ');
Да бисте проверили близину речи између скоро 5 речи, додат је у наставку.
>> СЕЛЕЦТ * ФРОМ Дата ВХЕРЕ токен @@ то_тскуери ('погрешно <5> јел тако');
Закључак:
На крају, урадили сте све једноставне и компликоване примере претраживања целокупног текста помоћу оператора и функција То_твсецтор и то_тскуери.