Jak mogę zmodyfikować MySQL, aby to uwzględnić?
Będziesz musiał zmienić koncepcję MySQL, co to jest słowo.
Po pierwsze, domyślna minimalna długość słowa to 4. Oznacza to, że żadne wyszukiwane słowo zawierające tylko słowa o długości < nigdy nie będzie pasować, niezależnie od tego, czy jest to "C++" czy "cpp". Możesz to skonfigurować za pomocą opcji konfiguracyjnej ft_min_word_len, np. w my.cfg:
[mysqld]
ft_min_word_len=3
(Potem stop/start Mysqld i przebudować indeksy pełnotekstowe.)
Po drugie, „+” nie jest uważane za pismo przez MySQL. Możesz sprawić, że będzie to litera, ale to oznacza, że nie będziesz w stanie wyszukać słowa "ryba" w łańcuchu "ryba z frytkami", więc trzeba zachować ostrożność. I to nie jest trywialne: wymaga rekompilacji MySQL lub zhakowania istniejącego zestawu znaków. Zobacz rozdział "Jeśli chcesz zmienić zestaw znaków, które są uważane za znaki słowne ..." w section 11.8.6 dokumentu.
uciec znak + podczas procesu wprowadzania moich danych za coś takiego jak „__plus”, a następnie modyfikując moje poszukiwania, aby pomieścić
Tak, coś w tym jest wspólne rozwiązanie: można zachować "prawdziwe" dane (bez ucieczki) w podstawowej, ostatecznej tabeli - zwykle przy użyciu InnoDB dla zgodności z ACID. Następnie można dodać pomocniczą tabelę MyISAM, zawierającą tylko zniekształcone słowa dla przynęty pełnego tekstu. Możesz także wykonać ograniczoną formę wyłudzenia przy użyciu tego podejścia.
Inną możliwością jest wykrywanie wyszukiwań, których MySQL nie może wykonać, takich jak te, które zawierają tylko krótkie słowa lub nietypowe znaki, i powrót do prostego, ale powolnego wyszukiwania LIKE lub REGEXP tylko dla tych wyszukiwań. W tym przypadku prawdopodobnie będziesz chciał również usunąć stoplist, ustawiając ft_stopword_file na pusty ciąg znaków, ponieważ nie jest również praktyczne, aby podnieść wszystko w tym jako specjalne.
Co do cholery jest pełnotekstowym wyszukiwaniem Boolean? Brzmi strasznie, jakbyś wymyślił to słowo. Ponadto twoje pytanie jest bardzo niejasne. Musisz podać dokładniejszy opis problemu, co próbujesz zrobić. W przeciwnym razie nie możemy ci pomóc. –
@John: Jesteś bardzo surowy. Musiałem powstrzymać się od łączenia z lmgtfy, więc oto wyjaśnienie z MySQL: http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html –
@A. Rex - Jestem zły (w pewnym sensie) mój punkt widzenia jest trudny, ale brakuje mi pytania, w jaki sposób wypowiesz dobre pytanie. W związku z tym my (ludzie przepełnieni stosami) nie jesteśmy w stanie zapewnić dobrej odpowiedzi na podstawie niewystarczających informacji. –