Presentation Slides: https://www.canva.com/design/DAFU1_E73BU/MJ-yX7awmpWVvnYS5pPeKQ/view?utm_content=DAFU1_E73BU&utm_campaign=designshare&utm_medium=link&utm_source=viewer
Demo Video: https://drive.google.com/drive/folders/1UDL15Iw0EItJe62iR7Oeu_1-OkCYleUk?usp=sharing
App(因檔案太大),請由此下載 App程式碼:https://drive.google.com/file/d/1FBI7snaNGGzOWz_fjYCykEhlOjnznVxd/view?usp=sharing Apk檔案:https://github.com/RexRed6802/RamenSearcher/releases/download/1.0.0/app-debug.apk
以下內容皆節錄自上述連結
a. Topic: The Best Search Engine for RAMEN Lovers
b. Motivation: Recently, collecting different kinds of Ramen has become a trend in Taiwan. Those comments left on social media let more and more “novices” get to know this culture. However, we think some information is not accurate at all. Therefore, we wants to make a search engine for those RAMEN mania to get the rapidly and accurately RAMEN restaurants with high quality.
a. Keywords:
KEYWORD | WEIGHT
拉麵 | 500
豚骨 | 300
叉燒 | 300
雞白湯 | 200
醬油 | 200
台北 | 200
排隊 | 50
好吃 | 30
湯底 | 30
激辛 | 30
日本 | 30
日式 | 30
美食 | 30
湯 | 5
麵 | 5
b. Compulsory keyword:
When user search, and in googleQuery class , we will mandatorily and automatically add keyword like “拉麵” and “台北” to make the result more accurately.
c. The websites can be ranked:
i. https://ramenroamer.com/
ii. https://www.ramenexplorer.com/
iii. https://trade.1111.com.tw/web/%E6%8B%89%E9%BA%B5/
...etc
d. Formula:
Score = count x weight
a. We start with the main function in the main class. First of all, we call the searchGoogle function with the keys provided by users. The searchGoogle will query Google and return a HashMap including url and website title.
b. Second of all, we call the buildTree function to build the tree, setting every url in HashMap as the tree root and store each root in our resultList to make sorting them more convenient soon. For each root node, we set its score by calling each root's node's page’s setScore function. Then we jump into the second loop to get those urls contained in every page and set their score as we did to the root node. In turn, finishing building trees.
c. By the way, when we call setScore function in every webpages, we will create a wordCounter object to count its score. Then we call setPostOrderScore for every root.
d. When finishing creating every tree in resultList. we can use the selectionSort function to sort them.
e. Publish our result to front-end (user)
f. Unified Modeling Language(UML)
This is a project for Data Structure course.
[2022.12.16]
- finish finding relative words
- finish front-end design
- The project is done.... maybe
[2022.11.29]
[2022.11.26]
- Implement multithreading in our project and indeed speed up the crawling time.(just 10 seconds to build and search 40 web trees)
[2022.11.20]
- solve some of bugs like url not found or crawl the websites that with no content
- concise the code
- change our topic to ramen
[2022.10.22]