您好,登錄后才能下訂單哦!
1.1 solr簡介
ApacheSolr作為搜索服務器,實現(xiàn)站內(nèi)搜索具有封裝性好和良好的擴展性,多門戶社區(qū)多采用solr進行搜索引擎的建設。ApacheSolr 是一個開源的搜索服務器,Solr使用 Java語言開發(fā),主要基于 HTTP 和Apache Lucene 實現(xiàn)。
1.2 solr實現(xiàn)原理
Solr對外提供標準的http接口來實現(xiàn)對數(shù)據(jù)的索引的增加、刪除、修改、查詢。在Solr中,用戶通過向部署在servlet 容器中的Solr Web應用程序發(fā)送 HTTP 請求來啟動索引和搜索。Solr接受請求,確定要使用的適當SolrRequestHandler,然后處理請求。通過 HTTP 以同樣的方式返回響應。默認配置返回Solr的標準 XML響應,也可以配置Solr的備用響應格式。
1.3 solr特性
定制Solr 索引的實現(xiàn)方法很簡單,用 POST方法向 Solr服務器發(fā)送一個描述所有 Field及其內(nèi)容的 XML文檔就可以了。定制搜索的時候只需要發(fā)送 HTTPGET請求即可,然后對 Solr 返回的信息進行重新布局,以產(chǎn)生利于用戶理解的頁面內(nèi)容布局。Solr1.3版本開始支持從數(shù)據(jù)庫(通過 JDBC)、RSS提要、Web頁面和文件中導入數(shù)據(jù),但是不直接支持從二進制文件格式中提取內(nèi)容,比如 MSOffice、AdobePDF或其他專有格式。更重要的是,Solr 創(chuàng)建的索引與 Lucene搜索引擎庫完全兼容。通過對 Solr進行適當?shù)呐渲?,某些情況下可能需要進行編碼,Solr可以閱讀和使用構建到其他 Lucene應用程序中的索引。此外,很多 Lucene工具(如Nutch、Luke)也可以使用 Solr創(chuàng)建的索引。
Solr的特性包括:
1. 高級的全文搜索功能
2. 專為高通量的網(wǎng)絡流量進行的優(yōu)化
3. 基于開放接口(XML和HTTP)的標準
4. 綜合的HTML管理界面
5. 可伸縮性-能夠有效地復制到另外一個Solr搜索服務器
6. 使用XML配置達到靈活性和適配性
7. 可擴展的插件體系
1.4 solr使用Lucene并且進行了擴展
1. 一個真正的擁有動態(tài)域(DynamicField)和唯一鍵(UniqueKey)的數(shù)據(jù)模式(DataSchema)
2. 對Lucene查詢語言的強大擴展
3. 支持對結果進行動態(tài)的分組和過濾
4. 高級的,可配置的文本分析
5. 高度可配置和可擴展的緩存機制
6. 性能優(yōu)化
7. 支持通過XML進行外部配置
8. 擁有一個管理界面
9. 可監(jiān)控的日志
10. 支持高速增量式更新(Fastincremental Updates)和快照發(fā)布(SnapshotDistribution)
1.5 Schema(模式)
1. 定義域類型和文檔的域
2. 能夠驅動智能處理
3. 聲明式的Lucene分析器規(guī)范
4. 動態(tài)域能夠隨時增加域
5. 拷貝域功能允許對一個域進行多種方式的索引,或者將多個域聯(lián)合成一個可搜索的域
6. 顯式類型能夠減少對域類型的猜測
7. 能夠使用外部的基于文件的終止詞列表,同義詞列表和保護詞列表的配置
1.6 查詢
1. 擁有可配置響應格式(XML/XSLT,JSON,Python,Ruby)的HTTP接口
2. 高亮的上下文搜索結果
3. 基于域值和顯式查詢的片段式搜索(FacetedSearch)
4. 對查詢語言增加了排序規(guī)范
5. 常量的打分范圍(Constantscoring range)和前綴式查詢-沒有idf,coord,或者lengthNorm因子,對查詢匹配的詞沒有數(shù)量限制
6. 函數(shù)查詢(FunctionQuery)-通過關于一個域的數(shù)值或順序的函數(shù)對打分進行影響
7. 性能優(yōu)化
1.7 核心
1. 可插拔的查詢句柄(QueryHandler)和可擴展的XML數(shù)據(jù)格式
2. 使用唯一鍵的域能夠增強文檔唯一性
3. 能夠高效地進行批量更新和刪除
4. 用戶可配置的文檔索引變化觸發(fā)器(命令)
5. 并發(fā)控制的搜索器
6. 能夠正確處理數(shù)字類型,從而能夠進行排序和范圍搜索
7. 能夠控制缺失排序域的文檔
8. 支持搜索結果的動態(tài)分組
1.8 緩存
1. 可配置的查詢結果,過濾器,和文檔緩存實例
2. 可插拔的緩存實現(xiàn)
3. 后臺緩存熱啟:當一個新的搜索器被打開時,可配置的搜索將它熱啟,避免第一個結果慢下來,當熱啟時,當前搜索器處理目前的請求。
4. 后臺自動熱啟:當前搜索器緩存中最常訪問的項目在新的搜索器中再次生成,能夠在索引器和搜索器變化的時候高速緩存常查詢的結果
5. 快速和小的過濾器實現(xiàn)
6. 支持自動熱啟的用戶級別的緩存
1.9 復制
1. 能夠將使用rsync傳輸時改變的索引部分有效的發(fā)布
2. 使用拉策略(PullStrategy)來簡化增加搜索器
3. 可配置的發(fā)布間隔能夠允許對時間線和緩存使用進行權衡選擇
1.10 管理接口
1. 能夠對緩存使用,更新和查詢進行綜合統(tǒng)計
2. 文本分析調試器,能夠顯示每個分析器每個階段的結果
3. 基于WEB的查詢和調試輸出:解析查詢輸出,Lucene的explain方法細節(jié),能夠解釋為何某個文檔打分低,被排除在結果中等等
可以向Solr索引servlet傳遞四個不同的索引請求:
1) add/update允許向Solr添加文檔或更新文檔。直到提交后才能搜索到這些添加和更新。
2) commit 告訴Solr,應該使上次提交以來所做的所有更改都可以搜索到。
3) optimize 重構 Lucene 的文件以改進搜索性能。索引完成后執(zhí)行一下優(yōu)化通常比較好。如果更新比較頻繁,則應該在使用率較低的時候安排優(yōu)化。一個索引無需優(yōu)化也可以正常地運行。優(yōu)化是一個耗時較多的過程。
4) delete 可以通過 id 或查詢來指定。按 id刪除將刪除具有指定 id的文檔;按查詢刪除將刪除查詢返回的所有文檔。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。