Я играл с boolean mode
с поиском MySQL fulltext
, но я не понимаю результаты, которые я получаю порой.Смысл получения полного текстового результата в булевом режиме
Например, вот несколько строк данных ..
auction_id,'name'
100543,'2011-12 Fleer Retro patch auto'
100544,'2011-12 Fleer Retro patch auto jordan'
100545,'2011-12 Fleer Retro autograph'
100546,'2011-12 Fleer Retro autographed'
100547,'2011-12 Fleer Retro auto'
100549,'1999 jordan auto'
100550,'1999 auto jordan'
100551,'1999 autograph jordan'
100552,'1999 autographed jordan patch'
100553,'1999 jordan non auto'
Теперь, если я выполнить запрос:
SELECT auction_id,NAME,description FROM auctions WHERE MATCH(`name`) AGAINST('+jordan +auto' IN BOOLEAN MODE);
я получаю строки 100544,100549,100550,100553
возвращаемые, что является правильным. Однако, если я запускаю этот запрос:
SELECT auction_id,NAME,description FROM auctions WHERE MATCH(`name`) AGAINST('+jordan +auto -non' IN BOOLEAN MODE);
Получаемые те же результаты возвращаются; не должен 100553
уйти, так как он имеет «не» в name
?
Кроме того, если я изменить его на:
SELECT auction_id,NAME,description FROM auctions WHERE MATCH(`name`) AGAINST('+jordan +auto -"non auto"' IN BOOLEAN MODE);
я не дал никаких результатов; должен ли я получить их все, кроме 100553
?
Я только что проверил свой «ft_min_word_len», и он уже был установлен в '2'. – Brett
Я считаю, что я изменил это довольно давно, прежде чем эта база данных была даже построена. Чтобы убедиться, что я только что перестроил индекс и получил те же результаты. – Brett
@Brett: «non» - [секундомер] (http://dev.mysql.com/doc/en/fulltext-stopwords.html). – eggyal