- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
хороший друг попросил меня
я, к сожалению, только развел руками
работает он кем-то типа программиста-админа в консалтинговой компании, с инетом как таковым и не сталкивается, поэтому я за него спрашиваю
у них там куча каких-то актов, документов законов, они частично как-то упорядочены, но этого мало
в общем как он там не пытался сьехать на сторонние продукты, ему поручили разработать систему для поиска во всем этом
в принципе все легко, нинадо даже ничто никак католагизировать, просто нужно осуществлять поиск текста по документам
оказалось бы тут можно даже системными средствами windows справится, но не тут то было: документов таких около 400000 файлов общим весом примерно 15гб...:rolleyes: :eek:
в общем тут ясно, что ни средства винды ни какая другая софтина не справится с такой задачей при таких условиях: файлы явно надо загонять в базу данных и через нее уже очещуствлять поиск
я вот почему-то я всегда считал что проводить индексацию данных и осуществлять поиск по их индексу это вообще раз плюнуть, что проблема и все сложности только в сортировке, а точнее, в определении релевантности документа
но как я согласился ему помочть и перешел к практике, оказалось что я вообще ничего в этом не понимаю
так что большая просьба ко всем помочь кто чем может - статьей, книгой, личным опытом, знаю тут есть разработчики некоторых вэб поисковиков (те же Мета или БигМир), буду очень благодарен за любую помощь, тем более что мы же не конкуренты :d
все, что необходимо - это просто выполнить поиск по текстовому запросу, например, "ля-ля-ля, тополя цветут" и вывести документы с этими словами, никакой сортировки не надо, т.к. предпологается что документов, соответствующих каждому из запросов будет не более десятка
итак, конкретные проблемы:
- организация базы данных - как и в каком формате хранить индекс файлов?
- алгоритм поиска - как в готовой базе данных найти участок текста (документ), воответствующий запросу?
всем заранее большое спасибо за любое содействие в решении проблемы
Сэкономь им деньги, убеди использовать mnogosearch, или sharepoint (последний предпочтительнее). а то получаетя - но мы пойдем своим путем.
а по теме - самый простой способ - храниь в базе текст документов. потом делать по ним поиск типа select .. like . потом сохранять результат в кеш. при переиндексации ресетить кеш.
это самый простой вариант который вам скорее всего не подойдет... а для реализации более сложных - ваша схема "наколенного" продукта врядли подойдет. это мое имхо.
Во-первых, есть куча поисковиков с открытым кодом - mnogosearch, aspseek и т.д.
Во-вторых, если все это лежит в локальной сети и нет задачи делать публичный интерфейс, то можно поискать локальные поисковые движки, умеющие индексировать сетевые папки.
Индекс где находиться будет, откуда будет вестись поиск?
Да просто поставьте себе программу типа Архивариус 3000 - поиск по локальным документам любого формата. Создает индекс на диске и ищет по нему со скоростью ветра :)
Если не ошибаюсь, google desktop резво ищет по локальному компьютеру. Может это и есть самое простое решение?
Индекс где находиться будет, откуда будет вестись поиск?
в этом то и вопрос 🙄
спасибо всем за ответы, ну это же не мне, я, конечно, скажу, пусть еще раз поговорит, но насколько я понял там у них шеф кул-хакер тирэ ламер, он там начитался всего и теперь боится любых сторонних разработок чтоб случайно информация никуда не просачивалась и т.д. т.к. фирма одна из крупных, имеет солидные обороты, а информация - это весь их товар
rst, боюсь без какой-то правильной организации индекса, простой сэлект ... лайк не пройдет, тем более на тексте, хотя попытка не пытка, даже если за минуту справится с поиском, будет нормально, там это не критично, поэксперементируем
благодарю за ответы
если еще у кого какие мысли, буду рад выслушать тут / в личке
Пришла еще одна мысль в голову :
не просто текст туда ложить, а базовые формы. Т.е. падежи преобразовываем в именительный, окончания отсекаем. То же самое делаем с запросом - преобразовываем его в базовую форму. Так же убрать союзы, предлоги и прочие , не несущие смысла части языка. И по результату уже искать.
А дальше лучше заниматься не генерацией индексов и т.д. (представь сколько ты разрабатывать это будешь), а распараллеливанием. Пусть купят 3-4 сервера под это дело, и распредели базу по этим серверам. При поиске сразу же запрос распределяй на 4 сервера параллельно, а потом объединяй результаты. Будет достаточно быстро. А насчет индекса (могу конечно ошибаться) - мускуль сам проиндексирует поля.
Да, и в поддержку сторонних решений - порекомендуй SharePoint. Он как раз стоит дорого, и компания, которая его разработала (Microsoft) у нее столько денег, что на инфу этой конторы им просто пох :). Опять же , аргументируй тем, что Windows-то они используют поди.
rst, спасибо за совет, сам страх как люблю изобретать свяческие свои алгоритмы но боюсь, это не тот случай
а пока устрою тест селекта...
я уже сегодня говорил, результата как и ожидалось... по поводу винды - юзают винду, но на сервере что-то другое стоит, даже не знаю что... да и ладно, помогу уже знакомому сделать че требуют, вконце концов это не мои проблемы кого-то в чем-то убеждать
А вот зачем-нибудь мне захотелось высказаться... :)
Итак, на этапе индексации обходим все документы. Как уже предложил rst, переводим слова в базовые формы. Составляем индекс встречаемых в документах слов. Индекс можно организовать примерно как:
-слово
--адрес документа
--кол-во употреблений слова в документе
--адрес следующего документа...
...
--нечто, что указывает, что документы к данному слову кончились
При желании, составляем вспомогательный индекс, содержащий только само слово и адрес его секции в основном индексе.
В момент поиска переводим запрос в базовые формы. Главное - чтобы перевод делался так же, как и при индексации. На качество, пожалуй, можно плюнуть и морфологию целиком не реализовывать.
Обходим базу слов. Выписываем адреса документов, которые находятся в базе, в секции каждого из слов. Те документы, которые упоминаются напротив каждого из слов запроса, выдаем как "строгое соответствие". Остальные - как нестрогое - но это уже если есть подобное желание.
Ранжируем по счетчику из той же базы - по сумме употребления всех слов из запроса.
Прошу сильно не ругать, если меня чрезмерно занесло... В свое время было желание написать себе поиск по сайту, используя подобный алгоритм.
Бобер, вы зря недооцениваете возможности мускуля.
В свое время я работал с базами размером в несколько миллионов записей. Все было весьма шустро. Так что (имхо) наворачивать бесполезно.
Рекомендую скорость селекта погонять.
А индексы строить - это (имхо) будет весьма долго по разработке. И не думаю, что быстрее по скорости. Мускуль он ведь тоже индексы строит :)