Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL]Wyszukiwanie danych z bazy
Forum PHP.pl > Forum > Przedszkole
szarobury
Witam,
pragnę odnaleźć dane z bazy przy pomocy słowa w stringu, LIKE wyszukuje po literce w stringu, mi chodzi aby wyszukiwało mi po konkretnych słowach.
Bo jeżeli w bazie mam tekst 'tralalala' to wystarczy ze dam LIKE{$a$} i juz mam, a ja tak nie chce. Chce tak: baza > 'witajcie moi drodzy' i chce zrobić, że jeśli wpisze 'moi' to zwróci mi wynik.
Przepraszam, ale nie umiem tego jaśniej wytłumaczyć.
erix
  1. %moi%

Ale to i tak mało wydajne... Lepiej indeks fraz zrobić i wg niego wyszukiwać.
jolam
możesz powiedziec co to jest indeks fraz? Jak to działa?
erix
Słownik - osobna tabela ze słowami używanymi w serwisie.

W modelu relacyjnym, będzie to wiele-do-wielu -> jedna tabela z tekstami, druga - powiązania, trzecia - wszystkie dostępne słowa w tekstach. Wyszukujesz wg tej trzeciej (każde słowo) i dołączasz relacyjnie interesujące teksty.
CyberDuck_
Nie musisz w ten sposob robic.
To co proponuje moj przedmowca jest owszem wydajnym
sposobem, ale tak sie robi na serwisach gigantach . Forum przema
cos takiego stosuje i zwykle jest to najwieksza tabela ze wszystkich
poniewaz przed zapisem do bazy tekstu czy danych caly tekst
jest dzielony do tablicy przy pomocy exlode a pozniej kazde
slowo jest zapisywane. Wystarczy Ci wiedza o LIKE '%fraza%' .
% okresla z ktorej strony moga sie znajdowac dowolne znaki.
LIKE '%fraza' - musi sie zgadzac na koncu
LIKE '%fraza%' - moze stac na poczatku, w srodku lub na koncu
LIKE 'fraza%' - musi sie rozpoczynac od frazy
LIKE 'fraza' - musi byc taki sam jak fraza
erix
Cytat
Forum przema

Toś "ukochany" przez wszystkich wzór przytoczył... ;/

Cytat
Wystarczy Ci wiedza o LIKE '%fraza%' .
% okresla z ktorej strony moga sie znajdowac dowolne znaki.

Ta, i full-table search za każdym razem, super.
jolam
Czyli sama musiałabym wypisać kluczowe słowa tak jak indeks w książce. Potem zrobić tabelę
teksty a w niej dwie kolumny tekstid i tekst
słowa a w niej dwie kolumny slowoid i slowo
teksty-slowa a w niej kolumny tekstid i slowoid
O to chodzi?
I w tej ostatniej kolumnie będą się powtarzać wpisy np:
123; 2
123; 4
123; 9
125; 1

Dobrze to zrozumiałam?

pozdrawiam Jola

postscriptum
czy mógłyś mi polecić jakiś w miarę kompleksowy kurs cachowania i pozycjonowania seo, szczególnie pod kątem google?
CyberDuck_
Erix ty sie taki urodziles czy musiales to cwiczyc ? blinksmiley.gif
Stary mam strone z 200 tys odswierzen dziennie i load na serwerze
nie przekracza 1.5 na 1 gigowym procku wiec nie wydziwiaj.
Baza ma 26 tys wpisow, kazdy z duza iloscia tekstu wiec wybacz, ale
te Twoje uwagi nie sa nikomu potrzebne. Chcesz sobie nabic posty ?
Fifi209
@up
Pisze się odświeżeń.

200 tyś. dziennie? Hahaha kpisz sobie z Nas? W dodatku przy procku 1ghz, takie bajki to wiesz gdzie możesz puścić. Ale nie tutaj.

@topic
Zastosuj się do rady Erix'a.
thek
Zależy od tego jak to ma działać. Jeśli masz zamiar zrobić z tego coś w stylu "chmury tagów" to wspomniany przez Erixa system z tabelą złączeniową będzie chyba najlepszy. Gorzej gdy frazy mają być wyszukiwane w całości tekstu, tytule i czymś tam jeszcze. Wtedy jedyną chyba sensowną opcją będzie ustawienie na tych polach tabeli indexu full-text. Ma to tę zaletę, że działają wtedy dodatkowe kwantyfikatory wyszukiwania znane z wyszukiwarek jak + czy - co może ładnie posegregować nam wyniki pod względem trafności. Inną zaletą jest częściowe wyszukiwanie. LIKE i wariacje (również tagi o jakich wspomina Erix) słowa "awaria" i "awarie" potraktują jako dwa osobne co sprawi, że w wynikach jednego nie zobaczymy drugiego. Może się zdarzyć, że ze słowem "awarie" znajdzie tylko 3 artykuły, choć "awaria" ma ich 10, ale wyszukiwanie, nie używając full-text, nie uwzględnia ich. Minusem jest niestety szybkość działania. No ale albo szybkość, albo trafność wyników. Używania LIKE czy %LIKE% radziłbym unikać.
jolam
Troszkę się zagubiłam. Radzicie wybrać albo metode z indexami, taka jak napisał erix albo full-text search. I nie używać LIKE. Czy tak?

Czy ta metoda z indexami ma działać tak jak mi się wydaje i jak napisałam kilka postów wyżej? Czy ma mieć takie tabele jak napisałam i wyszukiwanie słowa w tabeli "słowa", sprawdzanie przy pomocy tabeli łącznikowej "teksty-slowa" jaki jest id tekstu i pobranie go z tabeli "teksty". Czy to tak ma działać, chce się upewnić, czy dobrze zrozumiałam.

Jeśli korzystam z bazy SQLite i nie mam do dyspozycji kolumny z full-text to nie moge skorzystac z tej metody, prawda?

Czy korzystanie z %LIKE%, które wydaje mi się najdokładniejsze poza szybkością ma jakieś wady? Bo LIKE działa w SQLite i mogłabym go użyć.

Proszę, polećcie jakiś w miarę kompleksowy kurs cachowania stron i pozycjonowania seo (szczególnie pod kątem google).

pozdrawiam Jola
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.