搜尋引擎開發的技術心得
注:以下技術說明僅個人理解,不一定完全正確
對於solr
1如何合理的建立索引,2
如何查詢索引
先說說第乙個問題:
solr建立索引的方式有兩種: 1
使用solr
頁面管理,設定好
schema.xml(
主要是對乙個索引型別的申明和定義)和
data-config.xml
(主要是設定乙個索引的資料**和匹配索引的型別)
2使用solrj
,使用solrj
的方式可以用**去控制建立索引和索引型別的邏輯,但是不是很直觀,不過如果業務上需要經常變化建索引的方式,或者需要實時同步索引,用
solrj
會好些,如果不是經常變化使用
solr
的配置檔案的形式會好些。
對於索引的建立中,我們還需要注意分詞,同義詞,糾錯詞等等詞庫,他們的邏輯是
分詞為最低許可權,也就是說當乙個詞支援同義詞的時候它就不做分詞處理或者糾錯處理了,
比如:「感冒靈顆粒「能同義詞為「感康」,本來「感冒靈顆粒」這個詞能分成「感冒」「靈」「顆粒」,但是「感冒靈顆粒」能被「感康」同義化,就直接同義成「感康」了。
另外對於索引的管理需要有乙個大致的認知,從大到小是:
core >document>entity>field. 他們的關係結果類似於資料庫的結構:
資料
一條資料
>
乙個字段。
最後在設計索引的時候一定要注意建立的效能問題,在實際的開發過程中當遇到權重,分詞,計算等等情況的時候是需要考慮到底是放在建索引階段,還是放在查詢索引階段,這是乙個權衡的問題!
再說說第二個問題:
對於搜尋的查詢是乙個很複雜的知識點,總的來說:
查詢策略的調整就是在控制相關度的高低,
這點很重要,以本人之前的經驗來看,經常會遇到一些搜尋策略的決策問題,如果把相關度調整的太低,那麼就會出現一些使用者認為莫名其妙的東西出現,當把相關度調整的太高,會出現使用者想搜尋的結果永遠也搜不到(因為可能只是比那個相關度的分界線低一點),所以
對於這個相關度的調整的好壞直接決定了整個搜尋引擎的好壞。
然後在具體說說對於查詢索引的一些細節的規則,對於查詢的條件大致可以分以下幾類:
1q 2filds 3sort 4
權重。當然還有很多高階的屬性設定,不過這
4個是最基本的主要的,
我把全部的查詢條件的引數和解釋都貼在乙個文件中,另外對於
solr
的相關度的評分機制一定要了解
,這裡貼出公式:
對於具體代表的意思和演算法請看我的部落格:
搜尋引擎檢索技術
謝海勸 如此簡單的乙個輸入框 搜尋按鈕,卻可以實現如此神奇的一站式搜尋服務,為使用者提供豐富 準確的資訊,這要歸功於乙個強勁的後台引擎。使用者可曾想過,這麼簡單的行為,後台引擎可能會有成千上萬臺機器在為你服務。搜尋引擎就像一台高效運轉的發動機,不停響應使用者的請求,輸出使用者想要的資訊。高效的檢索系...
搜尋引擎檢索技術
如此簡單的乙個輸入框 搜尋按鈕,卻可以實現如此神奇的一站式搜尋服務,為使用者提供豐富 準確的資訊,這要歸功於乙個強勁的後台引擎。使用者可曾想過,這麼簡單的行為,後台引擎可能會有成千上萬臺機器在為你服務。搜尋引擎就像一台高效運轉的發動機,不停響應使用者的請求,輸出使用者想要的資訊。高效的檢索系統需要提...
搜尋引擎檢索技術
如此簡單的乙個輸入框 搜尋按鈕,卻可以實現如此神奇的一站式搜尋服務,為使用者提供豐富 準確的資訊,這要歸功於乙個強勁的後台引擎。使用者可曾想過,這麼簡單的行為,後台引擎可能會有成千上萬臺機器在為你服務。搜尋引擎就像一台高效運轉的發動機,不停響應使用者的請求,輸出使用者想要的資訊。高效的檢索系統需要提...