-- 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');
Wyszukiwanie pełnotekstowe wymaga pewnej różnorodności, aby pozbyć się powtarzających się „szumów”. Testowanie z minimalną ilością danych przyniesie słabe wyniki. Rzuć na nią całą swoją kolekcję, aby wyszło coś sensownego. Istnieją ustawienia minimalnego rozmiaru słów, które nawet próbowano przeszukiwać, jak widać w niektórych poniższych linkach.
Zatrzymaj słowa
Istnieje MySql Listy słów zakazujących w różnych językach reprezentujących nieistotne słowa pomijane podczas procesu wyszukiwania. Ta lista jest kompilowana na serwerze, ale można ją zastąpić, jak widać w tym Strona podręcznika i tekst:
Aby zastąpić domyślną listę odrzucanych słów, ustaw zmienną systemową ft_stopword_file. (Patrz Sekcja 5.1.4, „Zmienne systemowe serwera”.) Zmiennavalue powinna być nazwą ścieżki pliku zawierającego listę stopwordlist lub pustym ciągiem, aby wyłączyć filtrowanie stopword. Serwer szuka pliku w katalogu danych, chyba że zostanie podana bezwzględna nazwa ścieżki w celu określenia innego katalogu. Po zmianie wartości tej zmiennej lub zawartości pliku stopword, uruchom ponownie serwer i odbuduj indeksy FULLTEXT.
Niektóre przykładowe zapytania
-- 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);
aby uzyskać dopasowanie wielu słów:
SELECT id,prod_name, match( prod_name )
AGAINST ( '+harpoon +article' IN BOOLEAN MODE ) AS relevance
FROM testproduct
ORDER BY relevance DESC
Daje rzeczywistą wagę w relevance
kolumna:
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 |
|------------+--------------------------------------------------------------------------------------------------------------------+--------------------+
Usunięto sekcję wielu słów z tutaj . Dzięki spencer