Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Rozmyte wyszukiwanie pełnotekstowe
sazian
post 17.03.2019, 19:11:27
Post #1





Grupa: Zarejestrowani
Postów: 1 011
Pomógł: 136
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Pyton_000
post 17.03.2019, 19:33:05
Post #2





Grupa: Zarejestrowani
Postów: 7 799
Pomógł: 1373
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


A coś takiego:

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

?
Go to the top of the page
+Quote Post
sazian
post 17.03.2019, 19:45:06
Post #3





Grupa: Zarejestrowani
Postów: 1 011
Pomógł: 136
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


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

http://sqlfiddle.com/#!9/079e99/1/0
Go to the top of the page
+Quote Post
Pyton_000
post 17.03.2019, 20:00:59
Post #4





Grupa: Zarejestrowani
Postów: 7 799
Pomógł: 1373
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
mmmmmmm
post 18.03.2019, 12:06:12
Post #5





Grupa: Zarejestrowani
Postów: 1 411
Pomógł: 307
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


http://sqlfiddle.com/#!9/079e99/2
?
Go to the top of the page
+Quote Post
sazian
post 18.03.2019, 19:21:53
Post #6





Grupa: Zarejestrowani
Postów: 1 011
Pomógł: 136
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.08.2019 - 07:26