Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > PHP

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 22.06.2004, 22:38
styx вне форума Посмотреть профиль Отправить личное сообщение для styx Найти все сообщения от styx
  № 11  
styx

Регистрация: Apr 2003
Сообщений: 243
Да... распределённые базы - это нелегко. Тогда может имеет смысл вообще сделать отдельную таблицу для полнотекстового поиска - и в неё складывать
  • текст, в котором производится поиск
  • ссылку на исходную таблицу
  • идентификатор в исходной таблице
И, соответственно, при обновлении данных дублировать изменения в этой таблице. Геморно, конечно, а как на MySQL делать распределённые транзакции - вообще ума не приложу - но зато снизится нагрузка на SQL-сервер и получится делать поиск более-менее стандартизованным способом.

Старый 22.06.2004, 22:40
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 12  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
Цитата:
База данных распределенная и вней куча таблиц по которым и происходит поиск.
Не мог бы превести КОНКРЕТНУЮ СТРУКТУРУ твоей таблицы в которой что-то надо найти?

Старый 22.06.2004, 23:31
http вне форума Посмотреть профиль Отправить личное сообщение для http Посетить домашнюю страницу http Найти все сообщения от http
  № 13  
http

Регистрация: Oct 2003
Адрес: Украина, Киев
Сообщений: 45
Отправить сообщение для http с помощью ICQ
igor82

Блин, ну неужили непонятно.

Вот смотри:

PHP код:
$str_search explode(" "$search);
$num count($str_search) -1;

for (
$i=0$i<=$num$i++) {
$findOne mysql_query("SELECT * FROM table_1 WHERE name LIKE '%$str_search[$i]%'");
$findOne_num mysql_num_rows($findOne);
if (
$findOne_num != 0){
   for (
$f=1$f<=$findOne_num$f++) {
  
$findOne_fetch mysql_fetch_array($findOne);
   
// Выводим все записи 
   
} }

Где $search - строка запроса поиска;

Строку запроса мы разбиваем на слова. Потом считаем количество слов. Далее мы цикл прогоняем столько раз, сколько у нас слов. При каждом проходе цикла мы проверяем наличие такого слова в БД.

Вот и всё . Помойму ничего военного нет. И нестоит сильно голову ломать
__________________
Mr_Andruha

Старый 23.06.2004, 00:37
igor82 вне форума Посмотреть профиль Отправить личное сообщение для igor82 Найти все сообщения от igor82
  № 14  
igor82

Регистрация: Apr 2002
Адрес: Россия, Воронеж
Сообщений: 121
Отправить сообщение для igor82 с помощью ICQ Отправить сообщение для igor82 с помощью Yahoo
Цитата:
Оригинал написал(а) http
igor82

Блин, ну неужили непонятно.

Вот смотри:

PHP код:
$str_search explode(" "$search);
$num count($str_search) -1;

for (
$i=0$i<=$num$i++) {
$findOne mysql_query("SELECT * FROM table_1 WHERE name LIKE '%$str_search[$i]%'");
$findOne_num mysql_num_rows($findOne);
if (
$findOne_num != 0){
   for (
$f=1$f<=$findOne_num$f++) {
  
$findOne_fetch mysql_fetch_array($findOne);
   
// Выводим все записи 
   
} }

Где $search - строка запроса поиска;

Строку запроса мы разбиваем на слова. Потом считаем количество слов. Далее мы цикл прогоняем столько раз, сколько у нас слов. При каждом проходе цикла мы проверяем наличие такого слова в БД.

Вот и всё . Помойму ничего военного нет. И нестоит сильно голову ломать

Прежде всего огромное спасибо что дал ответы на вопрос...Честно - спасибо.....Но дело в том что так как ты показал выше никто не далает...И вывод записей не скопом нужен а опред образом....

Старый 23.06.2004, 00:43
igor82 вне форума Посмотреть профиль Отправить личное сообщение для igor82 Найти все сообщения от igor82
  № 15  
igor82

Регистрация: Apr 2002
Адрес: Россия, Воронеж
Сообщений: 121
Отправить сообщение для igor82 с помощью ICQ Отправить сообщение для igor82 с помощью Yahoo
Цитата:
Оригинал написал(а) kompadre


Не мог бы превести КОНКРЕТНУЮ СТРУКТУРУ твоей таблицы в которой что-то надо найти?
Там не таблица а база данных где куча таблиц...и поиск происходит не по таблице а по несколькоим таблицам одновременно.....Просто вникнуть в темку надо....Ещё раз вот смотри:

Пользователь ввел в строку поиска фразу 'ford спойлер фары'

Мы разбиваем строку на 'ford', 'спойлер', 'фары'

Нам нужно чтобы вывелись записи (если есть) где есть например ford и фары, ford и спойлер и т.д....Проблема в том что если мы ставим просто OR то база данных может вывести например FORD КОЛЁСНЫЕ ДИСКИ так как она найдет совпадения для 'ford'...а нам нужно чтобы она выводила записи где прежде всего встречаются эти слова вместе а потом уже остальные

Старый 23.06.2004, 02:57
styx вне форума Посмотреть профиль Отправить личное сообщение для styx Найти все сообщения от styx
  № 16  
styx

Регистрация: Apr 2003
Сообщений: 243
Уточнение:
Вы же работаете с SQL. Записи выводятся из таблицы по определению - это же реляционная модель. Как Вы собираетесь консолидировать эти РАЗНЫЕ таблицы?

Старый 23.06.2004, 04:24
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 17  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
((


Последний раз редактировалось kompadre; 23.06.2004 в 04:28.
Старый 23.06.2004, 04:28
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 18  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ


Последний раз редактировалось kompadre; 23.06.2004 в 04:33.
Старый 23.06.2004, 04:36
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 19  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
О! Блин. Прошлые два поста либо мускул либо мой браузер глючил и отсылалась утф-каша.

Вобщем так, мой дорогой друг. Либо ты обьясняеш конкретно в чем загвоздка (вот запрос а вот ошибка) либо ты нечего не добьешься (.

А вообще, раз уж ты заведуеш огромной базой данных почему-бы тебе самому не найти ответы на твои неудобопонятные вопросы? Это-же так приятно! =)


Последний раз редактировалось kompadre; 23.06.2004 в 04:39.
Старый 23.06.2004, 11:43
igor82 вне форума Посмотреть профиль Отправить личное сообщение для igor82 Найти все сообщения от igor82
  № 20  
igor82

Регистрация: Apr 2002
Адрес: Россия, Воронеж
Сообщений: 121
Отправить сообщение для igor82 с помощью ICQ Отправить сообщение для igor82 с помощью Yahoo
Вот смотрите ещё раз....

В таблице t1 предположим есть поля 'product_name' , 'car_name'.....

Предположим в таблице есть записи:

product_name | car_name
------------------------------------------
спойлер | ford
фары | ford
колёсный диск | ford
глушитель | ford


Наша цель осуществить поиск по этой таблице....Предположим что пользователь ввел фразу для поиска 'ford спойлер фары'. Что мы делаем

1) разбиваем фразу на слова 'ford' , 'спойлер', 'фары'

2) Пишем стандартный запрос :
SELECT t1.* FROM `table_1` t1 WHERE
(t1.product_name='ford' OR t1.car_name='ford')
OR
(t1.product_name='спойлер' OR t1.car_name='спойлер')
OR
(t1.product_name='фары' OR t1.car_name='фары')

ТАК ВОТ - этот запрос правильно работать не будет так как помимо ФАР и СПОЙЛЕРОВ выведутся ещё и глушители с дисками (это недопустимо)...А как построить запрос таким образом чтобы сначало вывелись результаты где втречается по возможности вся связка слов, или по крайней мере их сочетание например: ford фары ИЛИ ford спойлер....

Создать новую тему   Часовой пояс GMT +4, время: 23:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:50.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.