2011-01-06 11 views
5

Ustawiłem indeks pełnotekstowy na małym wyborze rekordów na 3 polach (próbowałem kombinacji 3 i uzyskałem taki sam wynik), a niektóre słowa zwracają wyniki dobrze, ale niektóre, takie jak "dom" i "australia", nie (co ciekawe, "australijskie" i "domowe").Wyszukiwanie pełnotekstowe MySQL nie działa w przypadku niektórych słów, takich jak "dom"

To dziwne zachowanie. Jeśli dodaję "Z ROZBUDOWANYM ZAKOŃCZENIEM", otrzymuję wyniki, ale nie są one teraz najważniejsze.

Ktoś ma pojęcie, dlaczego tak jest? W przeciwnym razie będę musiał uciekać się do używania LIKE wyszukiwań, a ja wolałbym, żeby było uwzględnione.

Odpowiedz

10

To może być kilka rzeczy:

  • MySQL posiada domyślną listę „STOP słów”, które nie są ujęte w pełnym wyszukiwaniem tekstu - http://dev.mysql.com/doc/refman/5.5/en/fulltext-stopwords.html. "dom" i "australia" nie znajdują się na tej liście, ale inne słowa, które wyszukujesz, mogą na nie wpływać.
  • Każde słowo, które pojawia się w ponad 50% wierszy lub ma 3 lub mniej znaków w bazie danych, jest również uważane za słowo zatrzymujące. Ta 50% sprawa jest szczególnie łatwa do przyłapania, jeśli testujesz wyszukiwanie pełnotekstowe na stole z kilkoma tylko wierszami.

Jeśli wyszukasz w Google hasło "mysql stop words", Znajdziesz w nim o wiele więcej, ponieważ jest to jedna z tych rzeczy, która przyciąga wielu ludzi.

+0

Uważam, że to jest poprawne. Miałem * dokładnie ten sam problem *. +1 – karim79

Powiązane problemy