С Новым годом! Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 5

Реализация мини поисковика

07.05.2013, 00:59. Показов 1052. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Знаю, что пишу не в тот раздел, но просьба не переносить и не удалять тему, т.к. все-таки программистов на хаскелле очень мало, поэтому надеюсь, что здесь увидят тему. Есть некоторые наработки, но нужно написать пару функций на хаскелле. За умеренное денежное вознаграждение. Кто согласен - напишите ЛС.

Добавлено через 39 минут
Связываться лучше не по ЛС, а мыло: artpaliy@mail.ru, skype: f.l.a.s.h.e.r
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2013, 00:59
Ответы с готовыми решениями:

Реализация класса поисковика
Здравствуйте. И так начнём, есть такой скрин: Это структура, их много и они все разные. Есть массив байт(всегда разный). ...

Реализация мини ЧПУ
Доброго дня. У меня вот какой вопрос... У меня есть скрипт play.php и ему передается Get запрос вида 255.255.255.255:11111 В...

Реализация мини-склада
Доброго дня всем! Я только начал изучать 1С и решил реализовать простейшую конфу "Мини-склад". Но, при прочтении небольшого...

3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
07.05.2013, 09:58
Сформулируй, что нужно сделать... Может найдутся желающие сделать бесплатно...
0
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 5
07.05.2013, 14:41  [ТС]
Дело в том, что я отлично представляю алгоритм и как должно работать, но незнание языка мешает мне всё это реалзовать. У меня есть краулер, который получает ссылку, затем берет всё содержимое html, затем очищает от тегов и разбивает по словам и ссылкам. Нужно этот краулер доработать, чтобы он слова приводил к одному регистру, убирал точки и запятые и самое сложное - разобраться с разными кодировками на разных сайтах.
Далее задача для поисковика: нужно несколькими потоками (forkIO кажется...) бегать по страницам и собирать слова контента в словарь отдельно по словам (просто текстовый документ) и ссылки. Далее идя по этим ссылкам, но не покидая сайт делать тоже самое заданое количество раз в ширину (не глубину ссылок) или пока не закончатся ссылки, ограничиваясь допустим 100 страниц. Полученные слова нужно загнать в словарь (преподаватель посоветовал следующее: Data.Map Map String [(String, Integer)]) Где будет слово, ссылки на страницы с этим словом и количество повторений. Таким образом можно заполнять этот словарь. К тому же при просмотре каждой следующей странице к этому слову в словаре нужно добавлять новые ссылки с соответствующим числом повторений, а не создавать новое. Результатом работы должен стать запрос по которому выведется список ссылок на страницы в следующем приоритете: если это несколько слов, то в том порядке где чаще всего встречаются оба слова, если одно или нет таковых страниц, то в том порядке, где чаще встречается каждое слово. А вторая часть - это по запросу слова выдавать ряд ссылок по количеству повторений на этой странице (если несколько слов введено, то по этому же принципу сначала И, затем ИЛИ). Например выдает от 0 до 20 ссылок.

Вот код краулера. На сколько я понимаю, его писал сам мой преподаватель, человек довольно умный и хороший, поэтому выкладывать его в открытый доступ не есть гуд, но всё же...

{-# LANGUAGE ScopedTypeVariables #-}

import Network.HTTP
import Text.HTML.TagSoup

import Data.List
import Prelude hiding (catch)
import Control.Exception (IOException, catch)

-- From "Real World Haskell" book
downloadURL :: String -> IO (Either String String)
downloadURL url =
do resp <- simpleHTTP (getRequest url)
case resp of
Left x -> return $ Left ("Error connecting: " ++ show x)
Right r ->
case rspCode r of
(2,_,_) -> return $ Right (rspBody r)
(3,_,_) ->
-- HTTP Redirect
case findHeader HdrLocation r of
Nothing -> return $ Left (show r)
Just url -> downloadURL url
_ -> return $ Left (show r)
`catch` (\(exn :: IOException) -> return $ Left "connection failed")

parse = dropTags ["script", "style"] . parseTags

getLinks = map (fromAttrib "href") . filter (~== "<a href>")
getWords = words . innerText

dropTags :: (Eq str) => [str] -> [Tag str] -> [Tag str]
dropTags labels [] = []
dropTags labels (tag:rest) =
case find (flip isTagOpenName tag) labels of
Nothing -> tag : dropTags labels rest
Just target -> skipTo target rest
where
skipTo target [] = []
skipTo target (tag:rest)
| isTagCloseName target tag = dropTags labels rest
| otherwise = skipTo target rest


По факту: есть функция - её нужно чуть-чуть доработать и написать еще две. Немного, не сильно сложно, но программист хаскелля из меня никакой =(
0
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 5
18.05.2013, 18:54  [ТС]
Ну может кто-нибудь откликнется?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2013, 18:54
Помогаю со студенческими работами здесь

Реализация мини игры в JavaScript
По нажатию кнопки старт объект совершает движение, на пути его движения встречаются препятствия, которые объект должен перепрыгнуть по...

Реализация мини прогресс бара
Добрый день вот такой вопрос! Я на сообщениях поставил лимит максимут 100писем как в прогресс баре сделать так чтобы можно было...

Реализация логики работы схемы на 17-ти мини-кнопках
Добрый вечер,уважаемые программисты!Хочу узнать получится ли сделать так? У меня есть 17 мини выключателей,хочу сделать так, что если...

Создание Мини Excel: реализация возможности создания строк-выражений
Строки-выражения, которые начинаются с символа '=' и могут содержать неотрицательные целые числа, ссылки на ячейки и простые...

Зависает windows 7 x64 и мини-тема на счёт видеокарты(мини во вторую очередь)
В общем проблема такая: каждый день либо bsod(дампы в архиве) либо комп просто останавливается и всё(то-есть всё застывает ни звуков...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru