注:前端不相關---只是用node實現了一下如何爬網站數據(大學課程的實驗)javascript
網頁索引與檢索
l 瞭解搜索引擎的工做原理及實現方法;
l 熟悉倒排索引的建立;
l 掌握查詢處理技術。html
l 獨立或合做(1~2人)完成實驗內容;
l 獨立完成實驗報告;(簡單要求以下)
1) 實驗目的、內容與要求及實驗環境描述;
2) 索引和檢索系統設計思路及整體框架;
3) (負責部分的)程序結構及具體實現的流程分析,提供主要數據結構、函數分析等;
4) 實驗結果分析;
5) 系統的優缺點、以及待改進的地方;
6) 在實驗過程當中遇到的問題,實驗的心得體會。前端
3.1 倒排索引
(1)網頁預處理。對實驗一採集到的網頁數據進行預處理,包括:網頁的去噪和正文信息提取、中文分詞、中止詞處理等。
(2)設計和建立倒排索引。對每一個索引的詞,至少應該記錄其文件頻率(df)。設計置入文件的數據結構,至少記錄每一個詞在各個文檔中出現的次數,即詞頻(tf)。同時對每一個文檔,記錄其文檔長度。
(3)對索引的過程,生成相關的統計信息,例如:建立索引所需的時間、索引的大小、詞彙表長度、具備最大df值的詞的置入列表的大小等。(可選)java
3.2檢索系統node
(1)設計實現一個簡單的檢索系統,可輸入檢索詞,並輸出查詢結果,按相關度排序。 (2)對指定的查詢詞(IR2019查詢詞.txt),給出每一個查詢結果排序,以及類似度得分。所提交的結果將被評估。
提交的結果文件有查詢結果的數據塊構成。每一個查詢詞對應一個結果數據塊,每一個查詢詞提交10條查詢結果。每一個結果數據塊格式以下:
第一行是查詢詞序號,如「TD01」
每一行是一條查詢結果記錄,格式爲: <URL Similarity>
URL:網頁的規範化URL,如「http://www.scut.edu.cn/new/90...」
Similarity:類似度得分
每一個數據塊的十條記錄按類似度從高到低排序,每一個數據塊之間以一個空行隔開.
(3)對結果進行人工判斷相關或不相關,而後基於該判斷用評測指標Precision@10和MAP計算系統的檢索性能指標。(可選)
(4)採用各類查詢處理技術對查詢進行優化處理。並對所採用的不一樣技術的應用效果進行比較分析。(可選)git
l 程序:包括源程序及註釋,程序安裝使用說明;
l 查詢結果文件:查詢詞對應查詢結果彙總
l 實驗報告:說明程序設計的思路,並對實驗過程進行分析和總結。github
l 參考課程講義的倒排索引、查詢處理與檢索評估、搜索引擎等章節;
l 開源索引系統Lucene:http://lucene.apache.org數據庫
----------工做內容分解
1生成倒序索引的文檔
2 生成實驗要求的結果(實驗關鍵詞txt)
3 網頁 能夠實時查詢而且生成關鍵結果
4在後臺跑服務器的服務 讀 數據 返回數據
作的優化工做
1 修改停用詞表
2 同義可是模糊的詞
3 沒有用本地數據庫保存詞語
4 本身獲取了詞頻和詞語出現的位置
5 result 去重
6 使用db.txt存儲數據
參考文章:
1 http://nathanchen.github.io/1...
2 nodejs 讀寫文件http://javascript.ruanyifeng....
3 json格式化的網站
https://www.bejson.com/
邏輯備註:
1writeFileSync
這是會默認會覆蓋原來的內容的apache