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

неуспешно търсене в пълен текст на mysql

-- drop table testproduct;
CREATE TABLE testproduct
(
    Id                VARCHAR(16),
    prod_name           TEXT,
    ProductIdType     VARCHAR(8),
  PRIMARY KEY (Id),
  FULLTEXT (prod_name)
) ENGINE=MyISAM;

insert into testproduct (id,prod_name,productidtype) values ('B00005N5PF','one pen and a good price for a pen','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('B570J5XS3C',null,'ASIN');
insert into testproduct (id,prod_name,productidtype) values ('C00ZZ5N5PF','let us get rid of some noise','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('D00LL5N5PA','four score and seven years ago our fore...','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('EEEZZ5N5PF','he has a harpoon','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('C01ZZ5N5PF','and then we','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('B00ZZ5N5PF','he has a pen in his pocket not a banana','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('C02ZZ5N5PF','went to the store','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('C03ZZ5N5PF','and decided that we should buy some','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('C04ZZ5N5PF','fruit cups or fruit or berries or pebbles','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('C037Z5N5PF','then he and her she and it','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('C04K95N5PF','threw some daggers and a harpoon','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('D88895N5PF','more noise and some of this','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('D34595N5PF','this article about harpoons really drills into the throwing of harpoon or harpoons to those that deserve a harpoon','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('D12395N5PF','and there we go','ASIN');

Пълното текстово търсене се нуждае от известно разнообразие, за да се отърве от повтарящия се „шум“. Тестването с минимални данни ще даде лоши резултати. Хвърлете цялата си колекция върху нея, за да излезе нещо смислено. Има настройки за минимален размер на думите, които дори се опитват да бъдат търсени, както се вижда в някои връзки по-долу.

Стоп думи

Има MySql списъци със стоп думи на различни езици, представляващи незначителни думи, пропуснати по време на процеса на търсене. Този списък се компилира в сървъра, но може да бъде отменен, както се вижда в този Ръчна страница и текст:

За да замените списъка със спиращи думи по подразбиране, задайте системната променлива ft_stopword_file. (Вижте раздел 5.1.4, „Сървърни системни променливи”.) Стойността на променливата трябва да бъде името на пътя на файла, съдържащ списъка със спиращи думи, или празния низ за деактивиране на филтрирането на стоп думи. Сървърът търси файла в директорията с данни, освен ако не е дадено име на абсолютен път, за да посочи различна директория. След като промените стойността на тази променлива или съдържанието на файла със спираща дума, рестартирайте сървъра и изградете отново вашите FULLTEXT индекси.

Някои примерни заявки

-- select * from testproduct
SELECT * FROM testproduct WHERE MATCH(prod_name) AGAINST('score' IN BOOLEAN MODE);
SELECT * FROM testproduct WHERE MATCH(prod_name) AGAINST('harpoon' IN BOOLEAN MODE);
SELECT * FROM testproduct WHERE MATCH(prod_name) AGAINST('banana' IN BOOLEAN MODE);
SELECT * FROM testproduct WHERE MATCH(prod_name) AGAINST('years' IN BOOLEAN MODE);

за да получите съвпадение на няколко думи:

SELECT id,prod_name, match( prod_name )
AGAINST ( '+harpoon +article' IN BOOLEAN MODE ) AS relevance
FROM testproduct 
ORDER BY relevance DESC

Дава реална тежест в relevance колона:

SELECT id,prod_name, match( prod_name )
AGAINST ( '+harpoon +article' IN NATURAL LANGUAGE MODE) AS relevance
FROM testproduct 
ORDER BY relevance DESC
+------------+--------------------------------------------------------------------------------------------------------------------+--------------------+
| id         | prod_name                                                                                                          | relevance          |
+------------+--------------------------------------------------------------------------------------------------------------------+--------------------+
| D34595N5PF | this article about harpoons really drills into the throwing of harpoon or harpoons to those that deserve a harpoon | 3.6207125186920166 |
| EEEZZ5N5PF | he has a harpoon                                                                                                   | 1.2845110893249512 |
| C04K95N5PF | threw some daggers and a harpoon                                                                                   | 1.2559525966644287 |
|------------+--------------------------------------------------------------------------------------------------------------------+--------------------+

Премахна секцията с няколко думи от тук . Благодаря, спенсър




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Двоични данни в MySQL

  2. Инсталиране на WordPress 5 на ZEIT сега с MySQL хостинг

  3. Инсталирайте MySQL на Ubuntu 14.04

  4. MySQL данни - Най-добрият начин за прилагане на пейджинг?

  5. Как правилно да създадете съставни първични ключове - MYSQL