Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   MySQL:Поиск в большой таблице(~5млн) (https://javascript.ru/forum/server/2705-mysql-poisk-v-bolshojj-tablice-%7E5mln.html)

Gvozd 09.02.2009 17:12

в DC можно искать только на вхождение подстрок.
если пишеш две подстроки, то ищет вхождение хотя бы одной.
НЕльзя:маски подстановки.вхождение И, отрицание, строки с пробелами,более сложные поисковые конструкции.И самое главное нельзя искать по файлам , которых в давнный момент ни у кого нету, из подключенных(например комп с уникальным файлом только по ночам включен, а ты об этом не знаеш).

Позже отпишусь об эксперименте с булеан мод.
добавление индекса долгая операция для этой базы)
---------------------------------------------------------------------
шустро сделался индекс, однако.
и бегает шустро(ищет меньше чем за сотую секунды)
НО!
находит не все строки с подстроками(в принципе, согласно его специфике применения явление нормальное)
Искал строку "2008"
способом через доп-таблицу, результатов 10550
через fulltext находит только 7016
причем дело не в повторяющихся именах
попробую перестроить индекс заново.но мне кажется не поможет

x-yuri 09.02.2009 18:23

есть еще такая идея: создавать каждый файл у себя на винчестере, а в содержимом указывать хоста или какой-нибудь id в БД. А индексация чтобы обеспечивалась файловой системой. В Windows вроде должна быть встроенная индексация (уточнить надо)

или поискать какое-то ПО, индексируещее файловую систему

Gvozd 09.02.2009 18:39

идея была такого рода.
но любой вынос поиска по подстроке довольно чреват
завпрос по типу
Код:

SELECT * FROM `table`
WHERE
id=xx OR
id=xx OR
id=xx OR
........
id=xx OR

при больших количествах id-шников(тестил при упомянутых уже 10000) в запросе, выполнятся будет очень долго(наскока помню секунд 30 пахал)
поэтому как быб внешне ПО не выдало мне необходимые ID, база будет долго думать.

и по поводу внешнего ПО я уже в начале темы привел пример работающего поисковика, который собран из двух програм(SSearch, ЯндексСервер)
Использование второго делает невозможность видоизменения поиска, и не позволяет комерционное использование либо размещение рекламы.
Но самое главное, хочу сделать сам.
Планируется потом обучение всяким "плюшкам" по типу релевантности по степени вероятности скачивания(неточно, естественно), отметки возможных фейковых файлов, и другое, актуальное для ДЦ

x-yuri 09.02.2009 19:29

насколько я понял SSearch, ЯндексСервер предоставляют морфологический поиск. А ты хочешь несколько другое. Индексирование файловых систем, имхо, как раз и предоставляет нужные тебе возможности

Можешь для начала поискать готовое решение. Или может есть какие-то библиотеки или специализированные БД, а потом уже свой вариант реализовывать. Но mysql для такого вида поиска, мне кажется, плохо предназначен

Gvozd 09.02.2009 20:08

Ssearch информацию о файлах из файллистов вгоняет в набор HTML-ек, которые потом индексируются Яндекс-сервером.
Он же и ищет потом по ним.
поиск у него морфологический, насколько я знаю.
примерно тот же результат и у FULLTEXT, я полагаю

насчет готовых решений смотрю с сторону попробовать Sphinks, при необходимости.
Мускул изначально не предназначен, не спорю.
но с другими базами я не работал, и посему их плюшек для этой задачи не знаю.

В принципе полученные мною результаты мне вполне подходят на данном этапе.
напишу, потестю.
если народу понравится моя задумка и будет полезна, пущу в инете.
в случае окупаемости, буду оптимизировать и переписывать.
в любом случае держать такое решение для индексации полудесятка хабов-тысячников получится.

Спасибо за советы.
Если наткнешся на конкретные имена решений, либо еще какие идеи, пиши.но писать я думаю буду пока что под это решение


Часовой пояс GMT +3, время: 17:31.