Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Ograniczenia indeksowania pełnego tekstu MySQL?

Z pewnością nie!

Każde wyszukiwane hasło składające się wyłącznie z zablokowanych słów po cichu zakończy się niepowodzeniem. Słowa mogą być blokowane z powodu ograniczeń minimalnej/maksymalnej długości i/lub pliku stopword.

Uważam, że domyślny plik odrzucanych słów jest zbyt agresywny, uniemożliwiał wiele prawidłowych wyszukiwań. Również domyślna minimalna długość 4 była bardzo często stosowana w przypadku akronimów, których ludzie mogliby chcieć wyszukać. Zmniejszyłem ft_min_word_len do 3 i całkowicie usunąłem stoplistę (ft_stopword_file=''). Dokument:http://dev.mysql.com /doc/refman/5.1/en/fulltext-fine-tuning.html

Można również sprawdzić zapytanie wyszukiwania, aby sprawdzić, czy zawiera ono tylko <4-literowe słowa, iw takim przypadku wrócić do wyszukiwania LIKE. Nie ma tak łatwego sposobu na obejście listy stop na poziomie aplikacji.

Wybór „znaków słownych” może nie odpowiadać Twoim potrzebom i trudno go zmienić. Na przykład wyszukiwanie „Terry” nie będzie pasować do „Terry's”. Ogólnie rzecz biorąc, nie ma wsparcia dla żadnego rodzaju łodygi, więc „herbatnik” również nie pasuje do „herbatników”.

Wreszcie, jak wspomniał cg, nie ma wsparcia dla InnoDB. W dzisiejszych czasach nie chcesz umieszczać wszystkich swoich danych w tabeli MyISAM.

Jeśli masz wolne miejsce, możesz umieścić główną, kanoniczną wersję danych w tabeli InnoDB, a następnie utworzyć oddzielną tabelę MyISAM, która zawiera kopię zawartości dowolnego tekstu, wyłącznie do użytku jako przynęta wyszukiwania. Musisz zaktualizować obie tabele w przypadku zmiany, ale jeśli tabela MyISAM utraci integralność, to przynajmniej stracisz możliwość przeszukiwania odpowiednich wierszy, zamiast podpalania rzeczywistych danych i otrzymywania błędów aplikacji.

Możesz wtedy, jeśli masz wolne cykle, zaimplementować własne przetwarzanie tekstu w wyszukiwarce i zapytaniach, aby ominąć niektóre z powyższych ograniczeń. Na przykład możesz zmienić znaczenie znaków, które chcesz zmienić w słowa-znaki, usunąć znaki, które nie mają być słowem-znakami, i wykonać proste ręczne rdzennie w języku angielskim.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Stół obrotowy z 3 stołami

  2. instrukcja przypadku w procedurze składowanej

  3. Funkcja JavaScript publikuje i wywołuje skrypt php

  4. Jak porównać (AND) dwa ciągi, które reprezentują maskę binarną w mysql?

  5. Zapytanie łączy wszystko w jeden wiersz, a nie w oddzielne wiersze