Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Поиск с помощью MATCH() для данных в utf8


Автор: UhaMurad 11.5.2008, 20:55
Здравствуйте!

Суть: В базе хранится таблица в кодировке utf8, сопоставление - utf8_general_ci. Инициирую вот такой запрос:

Код

            SELECT 
                `id` AS `id`, 
                `title` AS `title`, 
                `introduction` AS `short`, 
                GREATEST(
                    (MATCH(`content`) AGAINST ('президен*')) * 10 ,  
                    (MATCH(`introduction`) AGAINST ('президен*' WITH QUERY EXPANSION)) * 11 , 
                    (MATCH(`title`) AGAINST ('президен*' WITH QUERY EXPANSION)) * 14    
                ) / 11 AS `relevance`
            FROM 
                `com_materials_materials`
            WHERE 
                ( MATCH(`content`) AGAINST ('президен*') > 0 ) OR 
                ( MATCH(`introduction`) AGAINST ('президен*' WITH QUERY EXPANSION) > 0 ) OR 
                ( MATCH(`title`) AGAINST ('президен*' WITH QUERY EXPANSION) > 0 )
            ORDER BY `relevance` DESC 
            LIMIT 0, 12

        

Такой запрос возвращает пустой результат, хотя если вместо "президен" использовать "президент" - то результат есть. 

Вопрос: в чем дело? 


Спасибо!

Автор: skyboy 13.5.2008, 09:21
а зачем тебе звездочка в against?

Автор: UhaMurad 13.5.2008, 10:24
skyboy, чтобы искать по части слова... Из документации прочел. Без звездочки тоже не работает

Автор: skyboy 13.5.2008, 12:32
что-то не могу найти насчет "части слова".
не мог бы носом ткнуть?
твою проблему вижу в том, что по полному слову поиск идет, а по части - нет. так?

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