Как построить запрос поиска по разным ячейкам одной таблицы

Статус
В этой теме нельзя размещать новые ответы.
но я бы сделал при поиске выбор организационно-правовой формы из списка - их ведь не так много получится
так не получется потому как организационно правовая форма прописанна не у всех организаций и плюс в разных полях т.к. скрипт каталога был переписан и в новой его версии орган.форма пишется в отдельном поле. а за ссылку спасибо.
Чтобы было меньше головной боли наведи порядок в поле с формами собственности. Т.е. переименуй все "Обшество с ограниченной ответственностью" в ООО, "Акционерное общество" в АО и т.д.
так сделать тоже не выйдет т.к. некоторые предприниматели изъявляют желание чтоб название писалось полностью.
Ищешь в запросе форму собственности по списку, переводишь, если нужно, в тот формат в котором она находится в БД. Пусть это будет $form.
Удаляешь ее из запроса и устанавливаешь между словами по одному пробелу(в БД должно быть то же самое). Пусть название предприятия будет $name;
этот вариант былбы идеальным на мой взгляд но сделать так не представляется возможным :((

Добавлено через 12 минут
PHP:
$terms=explode(" ","ООО ПРАВО");
foreach ($terms as $trm) { 
$term.="$trm ";
}
$term=rtrim($term);
$query = "SELECT id,111,222, ( (1.5 * (MATCH(111) AGAINST ('$term' IN BOOLEAN MODE))) + (1.2 * (MATCH(222) AGAINST ('$term' IN BOOLEAN MODE))) ) AS relevance from ".$basepref."_catorg  WHERE ( MATCH(111,222) AGAINST ('$term' IN BOOLEAN MODE) ) HAVING relevance > 0 ORDER BY relevance DESC LIMIT 10";

1.5,1.2 -пример, сам подставь какие нужно. Если таблица конечно не innodb, и если я правильно понял что те нужно.
прокомментируйте пожалуйста свой пример кода точнее о чем говорит 1.5 * , 1.2 * что делает в данном примере и какую роль играет? а то я несовсем его понимаю.
 
так сделать тоже не выйдет т.к. некоторые предприниматели изъявляют желание чтоб название писалось полностью.
Им не все ли равно как оно там хранится в БД, им ведь важно только то, как отображается. На этот случай просто сделай флаг в таблице и все.

так не получется потому как организационно правовая форма прописанна не у всех организаций
Это уже проблемы этих организаций.
 
ак не получется потому как организационно правовая форма прописанна не у всех организаций
Это уже проблемы этих организаций.
точнее не у всех она прописанна в поле организационной формы но то что она прописанна у всех факт, у части предприятих в поле названия имеет следуюший вид
Название, Форма
т.е. КАМТРОН, ООО
а в новом представлении имеется поле правовой формы и название т.е. как и должно быть, вот такая вот неразбериха в базе
 
Дело конечно твое, но я бы советовал все-таки навести порядок в БД раз и навсегда, и контролировать ввод данных в дальнейшем. Иначе, может появиться задача, которая при настоящем заполнении БД, будет неразрешима не в ущерб производительности.
 
Дело конечно твое, но я бы советовал все-таки навести порядок в БД раз и навсегда, и контролировать ввод данных в дальнейшем. Иначе, может появиться задача, которая при настоящем заполнении БД, будет неразрешима не в ущерб производительности.
Вообщем спасибо, ваша позиция ясна, буду думать как поступить...
 
Если всё-таки попытаться обойтись без ресурсоёмкого поиска MATCH - AGAINST (like работает быстрее и регистронезависимый), предлагаю такой вариант решения задачи:



Получаем выборку, в которой в первом столбце "полное" название организации, а столбец w - "вес", мера соответствия поисковой фразы полному названию организации. Чем вес выше, тем совпадение точнее, поэтому вес выводится в убывающем порядке.
 
ясно, благодарю за разъяснение, теперь все поонятно, только вот как условие вписать динамически
к этому условию?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху