Iveely搜索引擎二三題,用你的智慧來解決吧!


      今天晚上整理了兩道比較簡單關於搜索引擎的題目,所有題均是Iveely搜索引擎中遇到的,與大家分享你的智慧吧!都不難,但是希望能夠找到一種最佳的解決辦法。

問題一: 

     背景介紹:

     在用戶搜索的過程中,我們會將用戶的關鍵字進行切分后,然后進行匹配。例如:用戶輸入“程序人生”,分詞后會得到"程序"、“人生”,我們已經可以通過時間復雜度為0(1)的方式提取出“程序”對應的網頁集合(9.00235,123.00691,96.00035...),以及"人生"對應的網頁集合(6.00025,123.00128,95.00245...),其中  整數部分是網頁編號,小數部分是該關鍵字在該網頁下的實際權值(價值),下一步,我們將合並“程序”,“人生”的網頁集合,然后反饋給用戶。
      問題產生:
     在合並的過程中,可能會遇到相同的網頁,那么遇到相同網頁的時候,我們將小數部分相加,整數部分不變,若小數部分累加后大於1則,全體集合中的小數 部分乘以0.1,然后繼續累加。
      需解決的問題:
     請設計一個數據結構,能夠在盡可能廉價的時間復雜度和空間復雜度下解決上面問題。

    

問題二: 

     背景介紹:

     搜索引擎中,每一個關鍵字都對應了無數張網頁,每一張網頁都對應着若干的關鍵字,搜索引擎在獲取到關鍵字后,一定要在盡可能快的時間內獲取出擁有該 關鍵字的網頁集合,目前最常用的做法是倒排序,然而倒排序文件中,雖然能夠很快的提取出網頁的關鍵字,但是網頁的權重卻不定相同。也就是到排文件的結構是無序的。

     

 

      下面我們把問題抽象為北京地鐵站信息,每一個站點都是關鍵字,每一條線路都是網頁。每一個站點被多條線路包含(每一個關鍵字被若干網頁包含),每一 條線路包含多個站點(每一張網頁包含多個關鍵字)。

      問題的產生: 

      倒排文件已經讓我們可以很快的提取出站點對應的線路,但是遺憾的是,例如:用戶搜索西直門,那么將返回地鐵2號線,地鐵4號線以及地鐵13號線。然而,地鐵4號線和地鐵2號線又有另外一個交集站點:宣武門。我們為什么需要知道宣武門呢?因為在Iveely的設計當中,認為:當搜索結果中的交集 站點越集中,當達到一個程度時,這個站點也可能是用戶比較感興趣的站點(數學證明:略),例如上圖中,若用戶換乘地鐵時,可能是想在西直門換乘地鐵,如果結果中的地鐵線路集合中包含宣武門的也很多,那么我們假設宣武門也可以是一個很好的換乘地鐵方案。

      需要解決的問題:

      請設計一種數據結構,在盡可能廉價的時間復雜度和空間復雜度下,計算出,搜索結果中包含相同站點的排序集合(按照出現的結果中包含的次數)。最簡單的例如:輸入西直門,可以返回推薦宣武門,如果還有包含的站點依次按照出現次數列出。

      以上題目是我自己擬出來的,是我在開源Iveely過程中遇到的問題,我想這是比較有意義的題目,因為不僅僅是我們的思維,還有我們code技術,當然最重要的是我們的數學,陸續我也會將其它類似的問題發出來,讓大家一起探討,學習,歡迎您對Iveely搜索引擎的關注,如果您有什么好的意見或建議,可以郵件liufanping@iveely.com 或微薄聯系我。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM