Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Słowo "of" w wyszukiwaniu pełnotekstowym
Forum PHP.pl > Forum > Bazy danych > MySQL
sazian
Witam,
jak zwykle mam bardzo dziwny problem,
z jakiegoś powodu wyszukiwanie pełnotekstowe nie chce działać ze słowem "of".

Niestety wyszukiwanie tak krótkich słów wymaga zmiany konfiguracji mysql'a więc nie mogę wstawić przykładu live, w związku z tym postaram się to opisać w miarę dokładnie.
U nie w bazie config jest zmieniony na
Kod
innodb_ft_min_token_size=1
ft_min_word_len=1


Indeks oraz wiersze były dodawane po zmianie konfiguracji, ale dla pewności użyłem wszystkich opcji z phpmyadmina do przebudowy tabeli.

W kolumnie z indeksem full mam dodane nasypujące wiersze
Cytat
Jakis tekst z of i cos jeszcze
Jakis tekst z oo i cos jeszcze
Jakis tekst z fo i cos jeszcze

następnie w bazie próbuję kolejno wyszukać trzy słowa: of, oo, fo
  1. SELECT nazwa,MATCH (sklep_towary_szukaj.nazwa ) AGAINST ('+of*' IN BOOLEAN MODE) AS 'MATCH' FROM tabela


wyniki wyglądają następująco:
słowo of:

Kod
+--------------------------------+-------+
| nazwa                          | MATCH |
+--------------------------------+-------+
| Jakis tekst z of i cos jeszcze |     0 |
| Jakis tekst z oo i cos jeszcze |     0 |
| Jakis tekst z fo i cos jeszcze |     0 |
+--------------------------------+-------+


słowo oo:
Kod
+--------------------------------+--------------------+
| nazwa                          | MATCH              |
+--------------------------------+--------------------+
| Jakis tekst z of i cos jeszcze |                  0 |
| Jakis tekst z oo i cos jeszcze | 10.634283065795898 |
| Jakis tekst z fo i cos jeszcze |                  0 |
+--------------------------------+--------------------+



słowo fo:
Kod
+--------------------------------+--------------------+
| nazwa                          | MATCH              |
+--------------------------------+--------------------+
| Jakis tekst z of i cos jeszcze |                  0 |
| Jakis tekst z oo i cos jeszcze |                  0 |
| Jakis tekst z fo i cos jeszcze | 1.8257453441619873 |
+--------------------------------+--------------------+



jak widać słowo oo zostało odnalezione bardzo dobrze, słowo fo już nieco słabiej ale dalej jest wyszukiwane, natomiast słowo of nie jest znajdowane wcale.
Sprawdzałem to również dla innych tekstów typu "v 5" i tu działało prawidłowo. Jest tylko problem ze słowem of.

Macie jakiś pomysł o co może tu chodzić ? Bo mi już czułki opadają .... sad.gif  

Pyton_000
Spróbuj jeszcze dropnąć index i założyć na nowo tak aby się odbudowały.
sazian
Niestety dalej to samo.

edit:
równica jest taka że zwiększyła się wartość dla oo oraz nieznacznie dla fo
Kod
+--------------------------------+----------+-------------------+-------------------+
| nazwa                          | MATCH of | MATCH oo          | MATCH fo          |
+--------------------------------+----------+-------------------+-------------------+
| Jakis tekst z of i cos jeszcze |        0 |                 0 |                 0 |
| Jakis tekst z oo i cos jeszcze |        0 | 14.92204475402832 |                 0 |
| Jakis tekst z fo i cos jeszcze |        0 |                 0 | 1.828880786895752 |
+--------------------------------+----------+-------------------+-------------------+


edit2:
sprawdziłem jeszcze jak się zachowa po usunięciu gwiazdki i co ciekawe fo i oo teraz pokazują 14.92204475402832, a of dalej 0.
batman
"of" to tzw. stop word i dlatego pomijany jest w wyszukiwaniu. Tutaj znajdziesz więcej informacji - https://dev.mysql.com/doc/refman/5.7/en/ful...-stopwords.html
sazian
Dzięki działa smile.gif
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.