Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > FULL TEXT часто выдает все в подряд


Автор: gcc 2.9.2011, 15:58
есть большая таблица, нужно вывести с поиска данные: 

например запрос:
Код

SELECT  from, MATCH (a) AGAINST ("[email protected]") AS `relevance` FROM 
art WHERE MATCH (a) AGAINST ("[email protected]")  limit 10000;


он должен выдать 6 полей который совпадают с [email protected]
НО он выдает еще 2000 результатов все которые хотя бы не много совпадаю с [email protected]

в большинства случаев работает если задать минимальную релевантность 6:
Код

SELECT  from, MATCH (a) AGAINST ("[email protected]") AS `relevance` FROM 
art WHERE MATCH (a) AGAINST ("[email protected]") > 6 limit 10000;


НО в при данном поиске оно все равно не работает, выдает 2000 результатов вместо 6 !!! :madd:

есть добавить минимальную релевантность больше 6.9:
Код

SELECT  from, MATCH (a) AGAINST ("[email protected]") AS `relevance` FROM 
art WHERE MATCH (a) AGAINST ("[email protected]") > 6.9 limit 10000;


то выдает 28 результатов, вместо 6 которые должны быть 


ВОПРОС: как сделать чтобы поиск выдавал именно то что нашел? а НЕ все возможные похожие результаты по несколько тысяч, вместо 1-6 результатов  ?


Автор: Akina 2.9.2011, 17:04
Мммм... почитать справку по полнотекстовому поиску? посмотреть список модификаторов поиска и найти модификатор строгого соответствия?

Автор: gcc 2.9.2011, 18:33
Akina, 
я хочу написать

Код

 SELECT * FROM art WHERE MATCH (a) AGAINST ('databse' IN NATURAL LANGUAGE MODE) ;


мне выдает, почему?


ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NATURAL LANGUAGE MODE)' at line 1


что вы имеете ввиду?

Автор: gcc 2.9.2011, 19:57
Akina, 


написал такой запрос:

Код

SELECT *, MATCH (a) AGAINST ('"[email protected]"') AS `relevance` FROM art WHERE MATCH (a) AGAINST ('"[email protected]"' IN BOOLEAN MODE) limit 100;



выводит как надо!! НО он выполняется на одном сервере 40 сек, а на другом вообще бесконечно

Автор: gcc 10.9.2011, 13:55
вопрос решен!

запрос который вверху работает, там стоял order by который притормаживал 40сек. на базе с нексколькими Slave

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)