- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html
http://www.google.com.ua/search?q=FULLTEXT...art=10&sa=N
не нашел как сделать поиск по нескольким таблицам!
кто как делал?
3 таблицы: comment, content, section
в них столбцы: name и text
нужно отсортировать по релевантность по нескольким таблицам
(видел что по разному можно сделать, может LIKE лучше?)
и я не могу найти как выести вместе с ними название самой таблицы в которой был результат!
(ну чтобы написать какой тип данных, с какой таблицы и ссылку поставить пользователю)
есть такая штука только не пойму как пользоватся http://search.cpan.org/~tjmather/DBIx-Full...llTextSearch.pm
Если я все верно понял, предлагаю такой вариант: попробуйте сделать отдельно выборки из трех таблиц и уже в скрипте (php или чем вы там пользуетесь) сравнить коэффициенты релевантности найденных записей.
cамый обычный классический sql.
А как узнать сколько результатов выдало?
что-то я не понимаю как это сделать
все просто - нужно действовать по такой схеме
допустим, есть 2 таблицы - table1 и table2
у каждой таблицы есть поле title - при этом поле титл первой таблицы более важное, чем второй:
SELECT *,
( (1.3 * (MATCH(table1.title) AGAINST ('+term +term2' IN BOOLEAN MODE))) +
(0.6 * (MATCH(table2.title) AGAINST ('+term +term2' IN BOOLEAN MODE))) ) AS relevance
FROM table1, table2
ORDER BY relevance DESC;
спасибо, это понял вроду бы
А как узнать сколько результатов выдало?
что-то я не понимаю как это сделать
чтобы сделать по страничный вывод
2 раза запрос надо сделать?
в конце добавь limit 0,20
а как узнать как какой я странице? (есл ия не напервой)
то мне надо показать пользователю сколкьо страниц, во первых
и определить после лимит, откуда сам лимит считать
как это реализовать?
вы делали хоть когда-то по страничный вывод? надо с анчало узнать сколько всего элементов, в дальше лимит
или я вас не понял, вообще тема не расскрыта
====
А как узнать сколько результатов выдало?
что-то я не понимаю как это сделать
чтобы сделать по страничный вывод
2 раза запрос надо сделать?
да, нужно сделать два запроса - один как выше показано, а во втором меняется только
SELECT count(*) AS total,
Так делают только наркоманы.
В запрос с лимитом сразу после селект ставите предикат SQL_CALC_FOUND_ROWS
а потом делаете второй запрос SELECT FOUND_ROWS() - он вернет одну ячейку с общим числом строчек до применения лимита.
Так делают только наркоманы.
Не только. Например стоит у вас своё кэширование запросов (запросы тоже через свой интерфейс отправляются). Тут через FOUND_ROWS() будет проблематично считать, если только не обрабатывать такую ситуацию отдельно. В случае же с count(*) достаточно закешировать один раз запрос и в течение некоторого времени не трогать базу, хотя конкретно представленный SELECT count(*) AS total базу совсем не нагружает - чтение служебной информации без трогания самой таблицы можно и запрашивать, но это применительно к конкретному запросу.