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

Ответить в теме
Показано с 1 по 10 из 10
  1. Вверх #1
    Новичок Аватар для lunata
    Пол
    Женский
    Сообщений
    92
    Репутация
    33

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

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

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

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

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


  2. Вверх #2
    Модератор
    Мистер Одесский Форум
    Аватар для maxx™
    Пол
    Мужской
    Адрес
    Одеса
    Возраст
    46
    Сообщений
    32,357
    Репутация
    14687
    Цитата Сообщение от 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
    Посетитель
    Пол
    Мужской
    Возраст
    36
    Сообщений
    155
    Репутация
    23
    union вас не устраивает?

  4. Вверх #4
    Новичок Аватар для lunata
    Пол
    Женский
    Сообщений
    92
    Репутация
    33
    Если я правильно поняла так(конкретно в моем случае)
    $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 в 12:01.

  5. Вверх #5
    Модератор
    Мистер Одесский Форум
    Аватар для maxx™
    Пол
    Мужской
    Адрес
    Одеса
    Возраст
    46
    Сообщений
    32,357
    Репутация
    14687
    Цитата Сообщение от 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
    Новичок
    Пол
    Мужской
    Адрес
    Одесса
    Сообщений
    82
    Репутация
    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 в 18:41.

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

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

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

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

  10. Вверх #10
    Посетитель
    Пол
    Мужской
    Сообщений
    208
    Репутация
    30
    вижу рождается новый гугль. запасаюсь попкорном.


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

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

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

Ваши права

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