Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rozmyte wyszukiwanie pełnotekstowe
Forum PHP.pl > Forum > Bazy danych > MySQL
sazian
Witam,
mam tabelę w której na jeden z kolumn mam full text i mam tam zapisane zwroty "żółty stolik" i "żółte krzesełko"(zapisane bez polskich znaków),
wykonuję przykładowe zapytanie wyszukujące
  1. SELECT *,
  2. match(tekst) against ('+zolty*' IN BOOLEAN mode) zolty,
  3. match(tekst) against ('+zolte*' IN BOOLEAN mode) zolte
  4. FROM `full`


Kod
id      tekst                  zolty                   zolte
1      zolty stolik            0.0906190574169159      0
2      zolte krzeselko         0                       0.0906190574169159


Jak widać(mam nadzieję ;p ) gdy szukam słowa żółty to znajduje tylko żółty stolik, a gdy szukam słowa żółte to znajduje tylko żółte krzesełko.

Czy da się jakoś namówić bazę żeby wyszukiwanie było bardziej "fuzzy" ?

Próbowałem szukać przy pomocy soundex i w teorii fajne to działa bo indeks dźwiękowy dla żółte i żółte to "Z430" ALE identyczny indeks ma przykładowo słowo "zaledwie", a to powoduje że wyszukiwarka znajduje coś zupełnie innego niż bym oczekiwał sad.gif
Pyton_000
A coś takiego:

Kod
SELECT *,
match(tekst) against ('zolty'  WITH QUERY EXPANSION) zolty,
match(tekst) against ('zolte'  WITH QUERY EXPANSION) zolte
FROM `full`

?
sazian
prawie to samo,
zamiast 0.09 jest 0.18, a druga wartość zerowa

http://sqlfiddle.com/#!9/079e99/1/0
Pyton_000
No niestety. Do takich zabaw Elastic

Są protezy typu: https://gordonlesti.com/fuzzy-fulltext-search-with-mysql/ ale to za mało optymalne smile.gif
mmmmmmm
http://sqlfiddle.com/#!9/079e99/2
?
sazian
On ok, działa tylko że takim przypadku musiałbym mieć słownik możliwych odmian wszystkich słów lub na 2-3 ostatnich znakach wpisywać wszystkie możliwe kombinacje liter.
Wyszukiwane frazy są wpisywane do wyszukiwarki przez użytkowników.
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-2024 Invision Power Services, Inc.