Тема: Помогите со скриптом поиск

Ответить в теме
Показано с 1 по 10 из 10
  1. Вверх #1

    По умолчанию Помогите со скриптом поиск

    Привет всем.У меня возник вопрос-как сделать поиск по сайту на php, когда вся информация хранится в нескольких таблицах БД.

    например
    "SELECT * FROM таблица 1 WHERE MATCH(text) AGAINST('$search')"

    а мне нужно использовать таблицу 2,3,...

    Заранее спасибо.


  2. Вверх #2
    Модератор
    Мистер Одесский Форум
    Аватар для maxx™
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    38
    Сообщений
    23,357
    Репутация
    6088
    Цитата Сообщение от lunata Посмотреть сообщение
    Привет всем.У меня возник вопрос-как сделать поиск по сайту на php, когда вся информация хранится в нескольких таблицах БД.

    например
    "SELECT * FROM таблица 1 WHERE MATCH(text) AGAINST('$search')"

    а мне нужно использовать таблицу 2,3,...

    Заранее спасибо.
    (SELECT * FROM таблица 1 WHERE MATCH(text) AGAINST('$search'))
    UNION
    (SELECT * FROM таблица 2 WHERE MATCH(text) AGAINST('$search'))
    UNION
    (SELECT * FROM таблица 3 WHERE MATCH(text) AGAINST('$search'))

  3. Вверх #3
    Посетитель
    Пол
    Мужской
    Возраст
    29
    Сообщений
    234
    Репутация
    23
    union вас не устраивает?

  4. Вверх #4
    Если я правильно поняла так(конкретно в моем случае)
    $result=mysql_query("SELECT * FROM noutbuki WHERE MATCH(description) AGAINST('$search') UNION SELECT * FROM netbuki WHERE MATCH(description) AGAINST('$search')",$db);
    то - ноутбуки находит, а нетбуки находит вместе с ноутбуками где-то сзади .
    Возможно что-то с индексацией в БД напартачила
    Последний раз редактировалось lunata; 26.07.2010 в 13:01.

  5. Вверх #5
    Модератор
    Мистер Одесский Форум
    Аватар для maxx™
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    38
    Сообщений
    23,357
    Репутация
    6088
    Цитата Сообщение от lunata Посмотреть сообщение
    Если я правильно поняла так(конкретно в моем случае)
    $result=mysql_query("SELECT * FROM noutbuki WHERE MATCH(description) AGAINST('$search') UNION SELECT * FROM netbuki WHERE MATCH(description) AGAINST('$search')",$db);
    то ничего не изменилось.Поиск находит только ноутбуки.
    Возможно что-то с индексацией в БД напартачила
    Вы сначала просто запросы к базе дайте и посмотрите на результат. Да и эти все таблицы должны быть одинаковыми, либо же в select нужно изменять имена полей чтоб во всех запросах они выдавались одинаковыми.

  6. Вверх #6
    Новичок
    Пол
    Мужской
    Адрес
    Одесса
    Сообщений
    93
    Репутация
    19
    Цитата Сообщение от lunata Посмотреть сообщение
    Если я правильно поняла так(конкретно в моем случае)
    $result=mysql_query("SELECT * FROM noutbuki WHERE MATCH(description) AGAINST('$search') UNION SELECT * FROM netbuki WHERE MATCH(description) AGAINST('$search')",$db);
    то - ноутбуки находит, а нетбуки находит вместе с ноутбуками где-то сзади .
    Возможно что-то с индексацией в БД напартачила

    Если Вы собираетесь осуществлять поиск полнотекстовым поиском то проверьте чтобы столбцы по которым ведется поиск были проиндексировваны (индексом FULLTEXT) , кроме того столбцы эти должны быть текстовыми(CHAR, VARCHAR, все виды TEXT), иначе будет ошибка 1191

    Может лучше искать с помощью LIKE
    Выйгрыш по скорости поиска при полнотекстовом поиске конечно есть, но быстродействие при обновлении и внесении данных замедляется, объем данных в таблице возрастает в 2-3 раза.
    Последний раз редактировалось vadoru; 26.07.2010 в 19:41.

  7. Вверх #7
    Цитата Сообщение от vadoru Посмотреть сообщение
    Если Вы собираетесь осуществлять поиск полнотекстовым поиском то проверьте чтобы столбцы по которым ведется поиск были проиндексировваны (индексом FULLTEXT) , кроме того столбцы эти должны быть текстовыми, иначе будет ошибка 1191

    Поэтому наверное лучше искать с помощью LIKE
    Насчет этого я в курсе.
    А что такое LIKE ?

  8. Вверх #8
    Модератор
    Мистер Одесский Форум
    Аватар для maxx™
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    38
    Сообщений
    23,357
    Репутация
    6088
    Цитата Сообщение от lunata Посмотреть сообщение
    Насчет этого я в курсе.
    А что такое LIKE ?
    Девушка, в вашем случае нужно просто прочитать документацию
    http://www.mysql.ru/docs/man/Pattern_matching.html

  9. Вверх #9
    Посетитель
    Пол
    Мужской
    Возраст
    27
    Сообщений
    132
    Репутация
    16
    Lunata, посмотрите как вариант альтернативный поиск для вашего сайта http://www.google.com/cse/
    Жизнь в стиле Debian уже отучила меня собирать что-либо самостоятельно

  10. Вверх #10
    вижу рождается новый гугль. запасаюсь попкорном.


Ответить в теме

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения