2009-10-18 9 views
10

Próbuję uzyskać wyszukiwanie pełnotekstowe (w trybie boolowskim) w celu pobrania słów z trzema lub mniejszymi literami.Wyszukiwanie za pomocą pełnego tekstu MySQL dla słów składających się z trzech lub mniej liter

Obecnie, jeśli szukam czegoś takiego jak "NBA", nie otrzymuję żadnych wyników.

Jednakże, jeśli dopiszę operatora wieloznacznego "*" do wyszukiwanego hasła, otrzymam wyniki.

Czytałem również, że można usunąć ograniczenie trzy słowa w my.ini, ale zastanawiam się, czy istnieje lepszy sposób to zrobić w locie.

Odpowiedz

16

Ta część podręcznika mogą Cię interesować: 11.8.6. Fine-Tuning MySQL Full-Text Search(podając jego część):

minimalnej i maksymalnej długości słowy mają być indeksowane są zdefiniowane przez ft_min_word_len i ft_max_word_len zmienne systemowe. Domyślna minimalna wartość to: : cztery znaki: ; domyślne maksimum jest zależne od wersji . Jeśli zmienisz jedną z wartości , musisz odbudować indeksy FULLTEXT o wartości .
Na przykład, jeśli chcesz trzech znaków słowa być przeszukiwania, można ustawić zmienną z ft_min_word_len umieszczając następujące linie w pliku Opcja:

[mysqld] 
ft_min_word_len=3 

Następnie należy zrestartować serwer i odbuduj swoje indeksy FULLTEXT.

(Należy czytać tę stronę, aby uzyskać więcej informacji nie kopiuj-wklej ;-))

+0

Dzięki Pascal czytam już sam pomysł co mam to zrobić to z funkcją PHP, która sprawdza długość szukanej frazy i dołącza modyfikator wieloznacznika *, jeśli jest mniejszy niż ft_min_word_len zastanawiasz się, czy jest lepszy sposób na zrobienie tego, niż to ... –

+0

Och, przepraszam, nie rozumiem to ;; Nie mam na ten temat żadnego pojęcia ... nie jestem pewien, czy byłby to dobry wynik ;; tak jak sidenote: co powiesz na użycie zewnętrznego mechanizmu indeksowania/wyszukiwania, takiego jak solr czy sfinks? –

+0

dziękuję, Słyszałem o Sfinksie, ale jeszcze nie miałem czasu, żeby go owinąć, wkrótce się nim zajrzę –

Powiązane problemy