Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да накарате вашето булево търсене в пълен текст да вземе термина C++?

Ще трябва да промените представата на MySQL за това какво представлява думата.

Първо, минималната дължина на думата по подразбиране е 4. Това означава, че нито една дума за търсене, съдържаща само думи с <4 букви, никога няма да съвпадне, независимо дали това е „C++“ или „cpp“. Можете да конфигурирате това с помощта на ft_min_word_len опция за конфигурация, напр. във вашия my.cfg:

[mysqld]
ft_min_word_len=3

(След това спрете/стартирайте MySQLd и изградете отново пълнотекстови индекси.)

Второ, „+“ не се счита за буква от MySQL. Можете да го направите буква, но тогава това означава, че няма да можете да търсите думата „риба“ в низа „риба+чипс“, така че е необходимо малко внимание. И това не е тривиално:изисква прекомпилиране на MySQL или хакване на съществуващ набор от знаци. Вижте секцията, започваща „Ако искате да промените набора от знаци, които се считат за словни знаци...“ в раздел 11.8.6 на док.

Да, нещо подобно е често срещано решение:можете да запазите вашите „истински“ данни (без екранирането) в първична, окончателна таблица — обикновено използвайки InnoDB за съответствие с ACID. След това може да се добави допълнителна таблица MyISAM, съдържаща само обърканите думи за стръв за пълнотекстово търсене. Можете също така да направите ограничена форма на стеминг, като използвате този подход.

Друга възможност е да откриете търсения, които MySQL не може да направи, като например тези само с кратки думи или необичайни знаци, и да се върнете към просто, но бавно търсене LIKE или REGEXP само за тези търсения. В този случай вероятно ще искате да премахнете списъка за спиране, като зададете ft_stopword_file на празен низ, тъй като не е практично да вземете и всичко в него като специално.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Набор от символи на django с MySQL странност

  2. Вмъкване/актуализиране на помощна функция с помощта на PDO

  3. Какво е MySQL:Общ преглед

  4. Грешка при вмъкване в sql база данни с помощта на php

  5. Използване на MySQL с Entity Framework