есть две таблицы: dolzgnost Код (Text): id int(5) 1 2 name_dolzgnost varchar director menedger kandidat Код (Text): id_kand(5) 1 name_kand text текст какой то текст director опять текст dolznost_kand в таблицу kandidat в поле text загружается через форму текст. Во время сохранения необходимо чтоб программа искала в тексте совпадения с данными из name_dolzgnost , то есть поиск в тексте слов director, menedger . если программа находит эти слова в тексте то вносит их в поле dolznost_kand (возможно лучше сохранять id_kand) . То есть, мне необходимо в тексте находить определенные слова а потому выводить их в браузер если они там есть. Как это сделать? Возможно есть более лучшее решение?
Код (PHP): $words = explode(' ', 'текст какой то текст director опять текст'); $sql = "SELECT ... WHERE `director`=IN(".implode('","', $words).")"; но так делать не надо, может подробнее распишешь задачу, возможно есть другой алгоритм, который не поджарит проц сервера
Постараюсь описать подробно со стороны пользователя. 1. на странице в форму вносится текст резюме сотрудника Иванова . текст 100 - 200 слов. методом POST вносится в таблицу kandidat в поле text . 2. есть справочная таблица name_dolzgnost , в ней внесены значения "менеджер" и "директор" в поле name_dolzgnost. 3. после того, как сохраняется резюме Иванова , программа должна проверить текст резюме с целью найти слова: "менеджер" и "директор" . Если находит , то вносит найденое слово (или id_dolzgnost) в запись Иванова . 4. Конечная цель - когда резюме Иванова будет выводится на страницу, там должны выводится найденые слова. То есть, чтоб глазами не перебирать 200 слов резюме, пргограма выводит на страницу что Иванов - менеджер. 5. так же (я так думаю) по этим найденым словам будет проводится поиск (может я не правильно мыслю). Это сложно? Как это сделать? надеюсь я понятно описал задачу.
Уже становиться понятнее. Если я правильно понял, то через mysql это будет очень медленно. Попробуй воспользоваться Sphinx Open Source Search Engine. У тебя в таблице dolzgnost будет много записей?
грустно. А что имеено медленно, сохранять нового кандидата ? Я ещё mysql толком не освоил, братся за новую субд, даже не знаю... в таблице dolzgnost должно быть записей 20. не думаю что больше, думаю даже меньше . Это справочник названия должностей.
Ещё раз - во время внесения резюме сотрудника в талбицу kandidat программа должна найти совпадения в тексте с должностями в таблице dolzgnost. Если программа находит совпадения, то вносит их в таблицу kandidat (необходимые поля надо будет создать для внесения). Код (Text): Структура таблицы `dolzgnost` -- CREATE TABLE IF NOT EXISTS `dolzgnost` ( `id_dol` int(5) NOT NULL AUTO_INCREMENT, `name_dol` varchar(50) NOT NULL, PRIMARY KEY (`id_dol`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ; -- -- Дамп данных таблицы `dolzgnost` -- INSERT INTO `dolzgnost` (`id_dol`, `name_dol`) VALUES (1, 'менеджер'), (2, 'торговый представитель'), (3, 'продавец'), (5, 'Региоанльный представитель'), (19, 'мерчендайзер'), (20, 'территориальный менеджер'), (21, 'Начальник отдела продаж'); таблица с резюме кандидатов Код (Text): Структура таблицы `kandidat` -- CREATE TABLE IF NOT EXISTS `kandidat` ( `id_candidat` int(10) unsigned NOT NULL AUTO_INCREMENT, `rezum_txt` varchar(255) NOT NULL, `id_dol` int(5) NOT NULL, PRIMARY KEY (`id_candidat`), KEY `id_dol` (`id_dol`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ; -- -- Дамп данных таблицы `kandidat` -- INSERT INTO `kandidat` (`id_candidat`, `rezum_txt`, `id_dol`) VALUES (9, 'иванова \r\n06.2007—04.2008 10 месяцев Менеджер визового отдела/отдела продаж ООО "Мондо Турс", г. Москва, полная занятость. - приём и оформление документов на шенгенские визы - приём и оформление документов на визу в США и Великобританию - общение с клиент', 1), (10, 'Василий Чеботарев 01.2013 — 03.2015 (2 года 2 месяца) GmbH BVburo55, г. За рубежом Продажи Управляющий небольшого магазина в западной Европе - Организация работы магазина с нуля. - Подбор, обучение и мотивация персонала. - Отслеживание запасов товара и пр', 1), (11, 'Сверидов Никита Руководитель направления 08.2006–03.2011 Фирма - оператор спутникового противоугонного комплекса ЭШЕЛОН , Автомобили/запчасти/шины С августа 2006 года по апрель 2008 года - руководитель направления (продвижение бренда, продажи дополните', 1); Как это сделать? возможно как то так?: Код (PHP): 'INSERT INTO kandidat (dolzgnost) SELECT text FROM kandidat WHERE id=$id AND (kandidat LIKE менеджер)'
То что третью таблицу надо достроить это я уже понял. Но вопрос как проверить есть ли совпадения в таблице kandidat \ поле rezume_txt с значениями таблицы dolzgnost /name_dol?