Автор Тема: Вопрос по написанию поисковой системы?  (Прочитано 6271 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Unregistered

  • Гость
Как оптимальнее сделать следующую задачу:
Все данные хранятся в MySQL, пользователь кидает запрос и у него находятся некоторые данные по запросу, потом он вводит другой запрос и указывает искать в найденном. Как это лучше всего реализовать?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Вопрос по написанию поисковой системы?
« Ответ #1 : 26 Июля 2002, 10:21:25 »
Пиши в два этапа.
сначала напиши поиск просто, а потом - в найденном.
Если достаточно свежая версия mysql, и с правильно настроенным чарсетом, и искать хочется "по-взрослому", то почитай в мануале про MATCH ... AGANIST
Если нет, то просто - select * from table1 where textfield LIKE searchword1 and  textfield LIKE searchword2 ...
и так по всем таблицам.

Оффлайн Foshvad

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 0
    • Просмотр профиля
Вопрос по написанию поисковой системы?
« Ответ #2 : 26 Июля 2002, 20:24:41 »
Я сохраняю в сессии найденные в первый раз идентификаторы строк, а при втором ("искать в анйденом") запросе пишу .. id IN(1,2,3,4)
В принципе пожно в value к checkbox\'у поставить эти самые 1,2,3,4 - только проверить перед на служебыне символы

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Вопрос по написанию поисковой системы?
« Ответ #3 : 26 Июля 2002, 22:42:52 »
ИМХО самы простой вариант:
Выводя форму просто в ее текстовое поле выведи текст по которому велся поиск. Если чел захочет искать в найденном то он просто добавит в нее текст и нажмет "Искать".

Более сложный вариант:
В форме 2 поля:


+checkbox (искать в найденом)
Hidden сначало пустой, а если поиск был произведен то то в него пиши текст по которому был поиск:
value="<текст первого поиска>">
Поиск в найденом будет примерно такой:
SELECT * FROM tabname WHERE
(col LIKE "%$oldsearch[0]%") AND
(col LIKE "%search%")
Далее для old_search будет два поля в форме :
value="<текст первого поиска>">
value="<текст второго поиска>">
А поиск будет :
SELECT * FROM tabname WHERE
(col LIKE "%$oldsearch[0]%") AND
(col LIKE "%$oldsearch[1]%") AND
(col LIKE "%search%")

PS
Это мне только что в голову моча ударила и я все это придумал. На практике такого не делал, поэтому может что и не правильно. Хотя вроде все реально если с массивами умеешь работать.
Насчет варианта Foshvad-а то ИМХО если будет найдено 15 000 строк по запросу пользователя и потом все это писать в в сессию - будт тормозить (+еще буде длинный запрос к БД если буде поиск в найденном)
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Unregistered

  • Гость
Вопрос по написанию поисковой системы?
« Ответ #4 : 29 Июля 2002, 04:46:18 »
А имеет ли смысл первый поиск заносить во временную таблицу MySQL, а потом последующие поиски вести во временной таблице, а в конце сессии удалять временную таблицу?

P.S.: В идеале надо придумать алгоритм поисковой системы на PHP+MySQL, учитывая, что за 1 поиск будет находится очень много записей и чтоб "поиск в найденном" тоже можно было производить много раз и это не очень влияло на скорость поиска. Мот кто-нибудь уже сталкивался с этим или знает где можно почитать хорошие доки по написанию поисковых систем ???

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Вопрос по написанию поисковой системы?
« Ответ #5 : 29 Июля 2002, 10:05:44 »
У мя реализовано, то что Макс написал
http://www.autodealer.ru/db_part.php
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Вопрос по написанию поисковой системы?
« Ответ #6 : 29 Июля 2002, 11:10:40 »
собственно, так все и ищут. Foshvad, все-таки, дал маху с in.
С временной таблицей заморочиваться не стоит. Ее создание, на 15 000 строк, будет явно дольше, чем создание датасета на 15 строк для вывода результатов на экран и более сложный последующий поиск.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Вопрос по написанию поисковой системы?
« Ответ #7 : 29 Июля 2002, 11:15:08 »
RomikChef иногда стоит делать вр. таблицу, чтобы ускорить сортировку.
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Вопрос по написанию поисковой системы?
« Ответ #8 : 29 Июля 2002, 11:16:55 »
[OFF]Никто мне не подскажет что такое?
Все юзеры "Unregistered" у мя в Ignor List\'е...
Как от этого избавиться?[/OFF]
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Foshvad

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 0
    • Просмотр профиля
Вопрос по написанию поисковой системы?
« Ответ #9 : 29 Июля 2002, 11:36:55 »
Alexandr у меня чаво-то тоже. Видать к кто-то что-то в настройках форума поменял.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Вопрос по написанию поисковой системы?
« Ответ #10 : 29 Июля 2002, 11:39:03 »
Alexandr
чтобы ускорить сортировку, надо использовать индексы.

Вообще задача очень нечеткая.
Искать по словарям - это одно.
Полнотекстовый поиск - другое.

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Вопрос по написанию поисковой системы?
« Ответ #11 : 29 Июля 2002, 11:55:55 »
Цитировать
Alexandr у меня чаво-то тоже. Видать к кто-то что-то в настройках форума поменял

У меня тоже самое, вчера появилось, а игнор пуст! Отправил Nas`у e-mail, может это он чё "натворил"?
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Вопрос по написанию поисковой системы?
« Ответ #12 : 29 Июля 2002, 11:56:30 »
Цитировать
чтобы ускорить сортировку, надо использовать индексы.

Не только!!!
Временные таблицы ускоряют сортировку, если из большой таблицы выбирается мало данных.
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Вопрос по написанию поисковой системы?
« Ответ #13 : 29 Июля 2002, 12:08:04 »
Цитировать
ИМХО самы простой вариант:
Выводя форму просто в ее текстовое поле выведи текст по которому велся поиск. Если чел захочет искать в найденном то он просто добавит в нее текст и нажмет "Искать".

А если чел заядлый ламер в трем колене? Лучше делать чекбокс.

Цитировать
RomikChef иногда стоит делать вр. таблицу, чтобы ускорить сортировку.

Но не в этом случае. :( Лучше индексы !!!

А кто поделится опытом, как лучше/быстрей/качественней ранжировать результаты?

P.S. Unregistered зарегистрируйся, меньше проблем будет остальным, в форуме глюк.
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Вопрос по написанию поисковой системы?
« Ответ #14 : 29 Июля 2002, 12:10:10 »
И как ты определишь - много данных выберется или много?
Человек ясно написал - 15 тыщь строк. При том, что из них понадобится дай бог сотня.
MySQL к примеру, перестанет сортировать после того, как найдет на лимит записей. Будет быстро.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28