PETGRESQL Pełny samouczek wyszukiwania tekstu

PETGRESQL Pełny samouczek wyszukiwania tekstu
Pełne wyszukiwanie tekstu jest obsługiwane w PostgreSQL. Pełne wyszukiwanie tekstu jest używane przez wyszukiwarki, sklepy i wiele innych stron na całym świecie.

Dokładnie wyszukiwania w bazie danych PostgreSQL są dokładne. Oznacza to, że gdy użytkownicy szukają „x y z”, baza danych PostgreSQL szuka „x y z” w dokładnej kolejności w polach określonej tabeli. Jeśli istnieje niewielkie niedopasowanie, powiedzmy, że masz „x y_z”, baza danych nie wyświetli żadnego wyniku.

Spójrzmy na prawdziwy scenariusz, a następnie jasno wyświetlisz pełne wyszukiwanie tekstu i jaka jest potrzeba.

Powiedzmy, że masz sklep IT, a użytkownik szukał „Desktop i Laptop”. Nie ma problemu. Ale czy faktycznie masz jakikolwiek produkt, który jest pulpitem i laptopem? Czy masz nawet produkt, którego tytuł mówi „XXX Desktop i laptop” dokładnie tak, jak szukał użytkownika? Najprawdopodobniej nie! Wyszukiwanie nie pokazałoby żadnych istotnych wyników. Użytkownik prawdopodobnie chciał wymienić wszystkie komputery w Twoim sklepie, których może użyć jako komputera stacjonarnego i laptopa, najprawdopodobniej kabrioletu. Ponieważ wyszukiwanie nie pokazało użytkownika żadnego wyniku, użytkownik może pomyśleć, że jesteś poza magazynem lub nie masz go w sklepie IT. Ale masz wiele kabrioletów, które mogą być używane jako komputer stacjonarny i laptopa w bazie danych sklepu. Jeśli użytkownicy nie mogą go znaleźć, nie otrzymasz żadnej sprzedaży. Chcesz na swojej stronie internetowej, aby wymienić wszystkie kabrioletowe komputery, które masz w magazynie, gdy użytkownicy przeprowadzają takie zapytanie. W tym miejscu wchodzi pełne wyszukiwanie tekstu. W przypadku niepowodzenia zwykłego wyszukiwania, pełne wyszukiwanie tekstu ratuje.

W tym artykule pokażę, jak przeprowadzić pełne wyszukiwanie tekstu za pomocą PostgreSQL. Zacznijmy.

Konfigurowanie PostgreSQL w celu pełnego wyszukiwania tekstu

Zanim będziesz mógł ćwiczyć pełne wyszukiwanie tekstu na PostgreSQL wraz ze mną, musisz skonfigurować PostgreSQL z pewnymi manekinami. W tej sekcji pokażę, jak je dodać do PostgreSQL.

Najpierw utwórz nową bazę danych za pomocą następującego polecenia:

$ Creedb It_store

Uwaga: tutaj It_store to nazwa bazy danych.

Teraz zaloguj się do powłoki postgrespresql It_store baza danych utworzona za pomocą następującego polecenia:

$ PSQL IT_STORE

Powinieneś zostać zalogowany do Postgresql It_store baza danych, jak widać na zrzucie ekranu poniżej.

Nie zamierzam tu zarządzać. Zamierzam stworzyć prosty produkty Tabela naszej bazy danych sklepu IT. Pola podstawowe, których potrzebuję ID produktu, Tytuł produktu, Opis produktu.

Kod SQL dla tabeli produktów podano poniżej:

Teraz skopiuj i wklej polecenie SQL, aby utworzyć produkty Tabela do powłoki postgreSQL, jak pokazano na zrzucie ekranu poniżej.

Po zakończeniu, produkty Tabela powinna być utworzona.

Teraz zamierzam wstawić niektóre produkty do produkty tabela. Polecenia SQL podano poniżej.

Produkty są wstawiane do produkty tabela.

Możesz uruchomić następujące polecenie SQL, aby sprawdzić:

$ Select * z produktów;

Jak widać, produkty są w tabeli produktów.

Pełne wyszukiwanie tekstu za pomocą PostgreSQL

We wcześniejszej sekcji pokazałem, jak dodać manekiny do bazy danych PostgreSQL. W tej sekcji pokażę, jak przeprowadzić pełne wyszukiwanie tekstu tych danych za pomocą PostgreSQL.

W PostgreSQL używasz dwóch funkcji, aby przeprowadzić pełne wyszukiwanie tekstu. Oni są to_tsvector () I to_tsquery (). Zobaczmy, jak działają i najpierw ich użyj.

Szybka wycieczka to_tsvector () I to_tsquery () Funkcje

to_tsvector () funkcja rozkłada ciąg wejściowy i tworzy z niego tokeny, które są następnie używane do przeprowadzania pełnego wyszukiwania tekstu za pomocą to_tsquery () funkcjonować.

Teraz, aby zrozumieć, co to_tsvector () Funkcja wykonuje ciąg wejściowy, otwórz powłokę PostgreSQL i uruchom następujące polecenie:

# Wybierz to_tsvector („Uwielbiam Linux. Linux to świetny system operacyjny.');

Jak widać wyjście to_tsvector () funkcja w zaznaczonej sekcji zrzutu ekranu poniżej, to_tsvector () Funkcja zerwała słowa i przypisała w nich niektóre liczby.

Możesz użyć to_tsquery () funkcja w następujący sposób:

# Wybierz nazwy polowe z TableName
Gdzie to_tsvector (fieldName) @@ to_tsQuery (Warunki)

Warunki to_tsquery () Funkcjonować

to_tsquery () przyjmuje warunki, które używa do porównania z wyjściem to_tsvector () funkcjonować.

Na przykład, jeśli szukasz „laptopa i pulpitu”, powinieneś umieścić „Laptop i komputer” Do to_tsquery () funkcjonować.

W przypadku „laptopa lub pulpitu” powinien być warunek „Laptop | pulpit'.

Teraz wejdę do naszej bazy danych sklepu IT, aby pokazać ci przykłady prawdziwego świata.

Poszukajmy urządzenia zamiennego, które można użyć jako komputerów stacjonarnych i laptopa, o którym mówiłem wcześniej.

Uruchom następujące polecenie SQL, aby to zrobić:

Jak widać, znaleziono odpowiedni komputer.

Możesz również odwrócić warunki. Na przykład możesz wyszukać „laptop i komputer”.

Prawidłowy wynik jest nadal wyświetlany.

Powiedzmy, że użytkownik chce wymienić wszystkie komputery stacjonarne lub laptopa w Twoim sklepie IT. Zapytanie to „komputer stacjonarny lub laptop” i stan to_tsquery () funkcja powinna być „Desiktop | laptop' Lub „Laptop | pulpit'.

Polecenie SQL to:

Jak widać, wszystkie komputery sklepu IT są wymienione.

Rzućmy okiem na inny przykład. Użytkownik szuka wszystkich laptopów w Twoim sklepie, ale nie zamiennych. Zapytanie użytkownika może być „Nie zamienne laptopy”. Warunek to_tsquery () może być funkcja '!kabriolet & laptops '

Polecenie SQL to:

Jak widać, znaleziono prawidłowego laptopa.

Czy zauważyłeś jedną rzecz? włożyłem Laptopy w To_tsQuery() funkcja, ale nie ma Laptopy Słowo kluczowe w opisie produktu. Jak to znalazł Postgresql? To jest magia pełnego wyszukiwania tekstu. Słowa kluczowe nie muszą być dokładne. Postgresql może nawet poradzić sobie z niektórymi liczbą liczb mnogiej, czasów.

Domyślnie pełne wyszukiwanie tekstowe działa tylko w języku angielskim. Ale PostgreSQL zapewnia również obsługę niektórych innych języków. Sprawdź dokumentację PostgreSQL, aby uzyskać więcej informacji.

W ten sposób przeprowadzasz pełne wyszukiwanie tekstu na PostgreSQL. Dziękujemy za przeczytanie tego artykułu.