|
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
|
|
| 07.05.2013, 00:59 | |
|
Ответы с готовыми решениями:
3
Реализация класса поисковика
Реализация мини-склада |
|
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
|
|
| 18.05.2013, 18:54 | |
|
Помогаю со студенческими работами здесь
4
Реализация логики работы схемы на 17-ти мини-кнопках
Зависает windows 7 x64 и мини-тема на счёт видеокарты(мини во вторую очередь) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|