|
6 / 6 / 1
Регистрация: 25.07.2009
Сообщений: 49
|
|||||||||||
Поиск по тегам (с чекбоксами)05.11.2010, 21:38. Показов 4185. Ответов 17
Метки нет (Все метки)
здравствуйте. есть таблица, содержащая ид статьи и ид тега. есть страничка, на ней имеется набор чекбоксов, соответствующих тегам. необходимо реализовать поиск статей, удовлетворяющих лишь выбранным тегам (чекбоксам). одна статья может быть ассоциирована с несколькими тегами.
например, таблица:
сам я реализовал поиск с использованием INNER JOIN, вот только при увеличении количества тегов, запрос становится длиннее и это сильно сказывается на производительности компа. возможно я как-то неправильно его реализовал... вот пример моего запроса для трех тегов (1,4,5):
0
|
|||||||||||
| 05.11.2010, 21:38 | |
|
Ответы с готовыми решениями:
17
Поиск по тегам в БД Поиск по тегам или расширенный поиск
|
|
6 / 6 / 1
Регистрация: 25.07.2009
Сообщений: 49
|
|||||||
| 05.11.2010, 23:51 [ТС] | |||||||
0
|
|||||||
|
261 / 247 / 57
Регистрация: 03.09.2010
Сообщений: 805
|
|
| 06.11.2010, 14:15 | |
|
Я делал через 2 форича, после обычного запроса в такую таблицу.
0
|
|
|
6 / 6 / 1
Регистрация: 25.07.2009
Сообщений: 49
|
|||
| 06.11.2010, 14:20 [ТС] | |||
|
0
|
|||
|
261 / 247 / 57
Регистрация: 03.09.2010
Сообщений: 805
|
||||||
| 06.11.2010, 14:28 | ||||||
|
Делаем запрос в бд
Возможно этот код задачу не решит, зато он поможет понять мою мысль о выводе нужной статьи через 2 форича. Да кстати вожможны проблемы со значениями. тогда нужно поменять if ($value['idnews'] == $value1['idtags']){ на if ($key['idnews'] == $key1['idtags']){ Не по теме: )) Не помню просто как там я точно делал.
0
|
||||||
|
6 / 6 / 1
Регистрация: 25.07.2009
Сообщений: 49
|
||
| 06.11.2010, 14:53 [ТС] | ||
|
есть еще идеи?
0
|
||
|
6 / 6 / 1
Регистрация: 25.07.2009
Сообщений: 49
|
|
| 06.11.2010, 15:31 [ТС] | |
|
0
|
|
|
6 / 6 / 1
Регистрация: 25.07.2009
Сообщений: 49
|
||
| 06.11.2010, 17:38 [ТС] | ||
|
0
|
||
|
|
||||||
| 06.11.2010, 18:00 | ||||||
|
попробйте так, но я не тестил, тут наклепал....
0
|
||||||
|
6 / 6 / 1
Регистрация: 25.07.2009
Сообщений: 49
|
||
| 06.11.2010, 20:44 [ТС] | ||
таблица news содержит полное описание статьи (ид, заголовок, дата публикации, текст ...)выбрать данные из таблиц статей и тегов я сам могу. основная проблема связана именно с выбором ид статей, связанных в точности со всеми (логическое И) выбранными пользователем тегами. из вашего кода следует, что в 1 строке из таблицы связей статья-тег я получу ид статей, связанных с тегом 1. затем пробегая по массиву (строка 4), я выберу что-то связанное с тегом 2 и имеющее ид статьи равное тому, что было выбрано в строке 1. а какова вероятность что статья с тегом 1 будет также связана с тегом 2? как насчет еще 10 выбранных пользователем тегов? их придется дописать во вложенные циклы for. и еще, индикация тегов может иметь пропуски, т.е. ид тегов = {1,2,3,6,8,9,10,15...}. благодарен за труды, но вариант не годится.
0
|
||
|
6 / 6 / 1
Регистрация: 25.07.2009
Сообщений: 49
|
|
| 09.11.2010, 19:17 [ТС] | |
|
народ, неужели никто подобного не писал?
0
|
|
|
lexxpavlov
|
||||||||||||||||
| 27.11.2010, 10:50 | ||||||||||||||||
|
Поиск по тегам с указанием количества совпадений тегов
|
||||||||||||||||
|
6 / 6 / 1
Регистрация: 25.07.2009
Сообщений: 49
|
|||||||
| 27.11.2010, 13:07 [ТС] | |||||||
|
Добавлено через 12 минут upd/ исправил запрос (как ваш запрос работает у вас не возьму в толк, в мануале по мускулу строго написано что нельзя использовать псевдонимы в условиях):
0
|
|||||||
|
lexxpavlov
|
|
| 27.11.2010, 16:37 | |
|
О, точно. Конечно, нельзя использовать. Он ведь сначала делает WHERE, а только потом GROUP. Поэтому нельзя использовать в WHERE агрегированные столбцы.
Я у себя использую первый вариант, второй так написал, без проверки. Получить только те, что нужно, можно либо через HAVING, либо на стороне php. В столбце weight находится количество совпавших тегов из списка тегов. Соответственно, при weight=3 - строгое соответствие всем трем тегам. Сколько тегов передано - такое же максимальное значение weight. |
|
| 27.11.2010, 16:37 | |
|
Помогаю со студенческими работами здесь
18
Поиск по нескольким тегам в ManyToMany
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|