SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 08.08.2011 16:57:58

Andrejs
Участник
Зарегистрирован: 08.08.2011
Сообщений: 2

Полнотекстовый поиск с учетом регистра

Доброго всем дня!

Такая поблема, реализовал полнотекстовый поиск но он не чувствителен к регистру, знаю что есть вариант сделать для колонок Коллайт, но это не вариант т.к. с колонками работают 2 запроса, один из которых не должен быть чувствителен к регистру, на сколько я понимаю если сделать коллайт, то учет регистра будет всегда.

Пробовал приложить IN BOOLEAN MODE но както результатов не принесло.

Пример запроса:

SELECT
par.client_partner_id AS client_partner_id,  
par.company_name AS company_name,
par.status_kl AS status_kl,
par.status_part AS status_part,
par.reg_numb AS reg_numb,
par.resident_type AS resident,
par.jur_address AS jur_address  

FROM client_partner par
LEFT JOIN contact_pers per
ON per.client_partner_id = par.client_partner_id WHERE
(
(MATCH (par.company_name,par.jur_address,par.add_info_resident) AGAINST ('nazvan' IN BOOLEAN MODE))
OR
(MATCH (par.company_name,par.jur_address,par.add_info_resident) AGAINST ('Назван' IN BOOLEAN MODE))
)
OR
(
(MATCH (per.contact_pers_name) AGAINST ('nazvan' IN BOOLEAN MODE))
OR
(MATCH (per.contact_pers_name) AGAINST ('Назван' IN BOOLEAN MODE))
)
OR
(
(MATCH (par.company_name,par.jur_address,par.add_info_resident) AGAINST ('trali' IN BOOLEAN MODE))
OR
(MATCH (par.company_name,par.jur_address,par.add_info_resident) AGAINST ('трали' IN BOOLEAN MODE))
)
OR
(
(MATCH (per.contact_pers_name) AGAINST ('trali' IN BOOLEAN MODE))
OR
(MATCH (per.contact_pers_name) AGAINST ('трали' IN BOOLEAN MODE))
)
GROUP BY par.client_partner_id




Может поможите )

Неактивен

 

#2 25.08.2011 01:36:51

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Полнотекстовый поиск с учетом регистра

Можно схитрить и запихнуть эту штуку в подзапрос. Т.е. сделать доп.проверку
на выходе:

SELECT * FROM (SELECT ... FROM tablename WHERE MATCH ...) subq WHERE field LIKE '%трали%';

LIKE будет применяться только к уже отобранным нечувствительным к регистру
поиском, а потому будет не сильно замедлять работу запроса.

Неактивен

 

#3 29.08.2011 12:25:40

Andrejs
Участник
Зарегистрирован: 08.08.2011
Сообщений: 2

Re: Полнотекстовый поиск с учетом регистра

Спасибо, хитрый ход! )

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson