![]() |
|
Модераторы: skyboy |
![]()
|
|
| tishaishii |
|
||||||||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
Есть таблица баннеров:
Каждая запись keywords - это набор из отдельных слов и словосочетаний. Например: баннер надо показывать, когда в запросе пользователя было слово "КИРПИЧ" или набор из слов "САХАР, РАФИНАД". Т. е., в таком случае, при запросе пользователя "САХАР" или "САХАР-ПЕСОК" соответствия для данной записи не будет. А если спросят "КИРПИЧИ", или "КИРПИЧИ И САХАР", или "РАФИНАД-САХАР" - то такому запросу будет соответствовать приведённая запись. Вопрос по алгоритму реализации... По смыслу подходит полнотекстовый поиск по пользовательскому запросу запросом из ключевых слов баннера, вроде:
Но в match() должно быть поле таблицы, а в against() - переменная или константа - выражение или столбец не подходят для движка FTS (???). У меня получилось такое вот корявое решение:
Т.е. существуют две таблицы "на подхвате", которые заполняются и чистятся каждый вызов процедуры. Есть предложения как выровнять решение? Это сообщение отредактировал(а) tishaishii - 28.12.2009, 17:35 |
||||||||
|
|||||||||
| Veve |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 1.1.2005 Где: Латвия, Рига Репутация: 3 Всего: 13 |
Честно говоря ничего не понял. Приведи пример набора данных в таблице, запрос пользователя и выходной результат, который должен получиться.
|
|||
|
||||
| tishaishii |
|
||||||||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
Т. е. если в ключевых словах к слову есть уточнения, то баннер показывается только если в запросе пользователя есть эти уточнения. А коли уточнений в ключевых словах нет, то показывать всегда. |
||||||||
|
|||||||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
Смысл. Для размещения баннера на сайте клиенту предлагается два варианта ключевых слов, по которым они будут показываться:
1. По одному слову (стоимость слова=100 тугриков). 2. По набору слов (стоимость каждого набора слов=10 тугриков). |
|||
|
||||
| Veve |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 1.1.2005 Где: Латвия, Рига Репутация: 3 Всего: 13 |
Почему нельзя сделать так:
И соответственно запросы:
Результат: 2 и 3;
Результат: 2;
Результат: 1; |
||||||||
|
|||||||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
1. locate не всегда использует индексы.
2. Вариант
Допустим, человек заплатил за то, чтобы его баннер показывался всегда при слове 'САХАР' в запросе. А другой - за то, чтобы его баннер показывался только, если в запросе били и 'САХАР' и 'ПЕСОК'. Тогда при запросе 'САХАР-ПЕСОК' показываем и 1го и 2го, а при запросе 'САХАР' - только первого. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |