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

Промяната на mysql ft_min_word_len в ubuntu не работи

Успях да открия проблема и поправката.

Настройката за пълнотекстово търсене беше добра, тъй като исках да търся с alt east 2 думи и имах ft_min_word_len = 2

Сега, докато правех повече тестове, открих, че произволно търси няколко думи от 2 знака и игнорира други.

Ето един пример

CREATE TABLE articles (
    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    title VARCHAR(200),
    body TEXT,
    FULLTEXT (title,body)
);

INSERT INTO articles (title,body) VALUES
('MySQL Tutorial','DBMS stands for DataBase ...'),
('How To Use MySQL Well','After you went through a ...'),
('Optimizing MySQL','In this tutorial we will show ...'),
('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
('MySQL vs. YourSQL','In the following database comparison ...'),
('MySQL Security','When configured properly, MySQL ...');

mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('use');
Empty set (0.00 sec)

mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('Use');
Empty set (0.00 sec)

mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('you');
Empty set (0.00 sec)

mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('the');
Empty set (0.00 sec)

mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('vs.');
Empty set (0.00 sec)

Но следното работи

mysql> SELECT * FROM articles
    -> WHERE MATCH (title,body) AGAINST ('run');
+----+-------------------+-------------------------------------+
| id | title             | body                                |
+----+-------------------+-------------------------------------+
|  4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
+----+-------------------+-------------------------------------+

Значи е нещо друго и очевидно е намерен ft_stopword_file който има списък с думи и не прави нищо, ако се извърши търсене с някоя от тях.

Списъкът е тук http://dev.mysql.com /doc/refman/5.1/en/fulltext-stopwords.html

Така че в този случай да разрешите всяко търсене на дума с дължина най-малко 2 знака

  • Задайте ft_min_word_len на 2
  • След това в конфигурационния файл на mysql за debian /etc/mysql/my.cnf добавете ft_stopword_file='path/to/stopword_file.txt'
  • Можем да оставим този файл празен, ако е необходимо.

О, още нещо, след като направим горните настройки, трябва да рестартираме mysql и ако променим ft_min_word_len тогава трябва да изградим отново индекса или да поправим таблицата.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Показване на всички дати между тях, дори и да няма резултат

  2. F# Свържете се с онлайн заявка за изпълнение на MySQL DB

  3. Как да настроя PHP тестов сървър в Dreamweaver?

  4. 15 основни въпроса за интервю за MySQL за администратори на бази данни

  5. Не можа да се зареди файл или сборка 'MySql.Data, версия=6.3.6.0