二、Solr 提供了層面搜索(就是統計)、命中醒目顯示並且支持多種輸出格式(包括XML/XSLT 和JSON等格式)。它易於安裝和配置,而且附帶了壹個基於 HTTP 的
管理界面。Solr已經在眾多大型的網站中使用,較為成熟和穩定。
三、Solr 包裝並擴展了 Lucene,所以Solr的基本上沿用了Lucene的相關術語。更重要的是,Solr 創建的索引與 Lucene 搜索引擎庫完全兼容。
四、通過對Solr 進行適當的配置,某些情況下可能需要進行編碼,Solr 可以閱讀和使用構建到其他 Lucene 應用程序中的索引。
五、此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用Solr 創建的索引。可以使用 Solr 的表現優異的基本搜索功能,也可以對它進行擴展從而滿足企業的需要。
solr的優點
通過上面Solr的簡介,可知solr的優點包括以下幾個方面:
①高級的全文搜索功能;
②專為高通量的網絡流量進行的優化;
③基於開放接口(XML和HTTP)的標準;
④綜合的HTML管理界面;
⑤可伸縮性-能夠有效地復制到另外壹個Solr搜索服務器;
⑥使用XML配置達到靈活性和適配性;
⑦可擴展的插件體系。
solr VS Lucene!?
在比較solr和Lucene之前,要知道什麽是Lucene,那麽首先就來回顧Lucene是個什麽東東?
Lucene是壹個基於Java的全文信息檢索工具包,它不是壹個完整的搜索應用程序,而是為妳的應用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta(雅加達) 家族中的壹個開源項目。也是目前最為流行的基於Java開源全文檢索工具包。目前已經有很多應用程序的搜索功能是基於 Lucene ,比如Eclipse 幫助系統的搜 索功能。Lucene能夠為文本類型的數據建立索引,所以妳只要把妳要索引的數據格式轉化的文本格式,Lucene 就能對妳的文檔進行索引和搜索。
那麽,solr和它相比,是”輸“了?還是“贏”了呢?
其實,Solr與Lucene 並不是競爭對立關系,恰恰相反Solr 依存於Lucene,因為Solr底層的核心技術是使用Lucene 來實現的,Solr和Lucene的本質區別有以下三點:搜索服務器,企業級和管理。Lucene本質上是搜索庫,不是獨立的應用程序,而Solr是。Lucene專註於搜索底層的建設,而Solr專註於企業應用。Lucene不負責支撐搜索服務所必須的管理,而Solr負責。所以說,壹句話概括 Solr: Solr是Lucene面向企業搜索應用的擴展。
下面是solr和 lucene的架構圖:?
這個圖很繁瑣,看不懂,大家不要灰心,在後面的代碼裏妳就能夠了解了這個圖所講的。
不難看出,綠色的就是lucene的模塊,而藍色的就是solr擴展了lucene。從圖上可以看出以下幾點:
a. 壹個真正的擁有動態字段(Dynamic Field)和唯壹鍵(Unique Key)的數據模式(Data Schema)?
b. 對Lucene查詢語言的強大擴展!?
c. 支持對結果進行動態的分組和過濾?
d. 高級的,可配置的文本分析?
e. 高度可配置和可擴展的緩存機制?
f. 性能優化?
g. 支持通過XML進行外部配置?
h. 擁有壹個管理界面?
i. 可監控的日誌?
j. 支持高速增量式更新(Fast incremental Updates)和快照發布(Snapshot Distribution)
說到這,solr的簡介就到此結束了,相信大家也對solr有了初步的了解,下面開始介紹壹下solr的常用屬性有哪些?
solr的使用屬性及配置文件
Document 包括壹個或多個 Field。Field 包括名稱、內容以及告訴 Solr 如何處理內容的元數據。
例如,Field可以包含字符串、數字、布爾值或者日期,也可以包含妳想添加的任何類型,只需用在solr的配置文件中進行相應的配置即可。Field可以使用大量的選項來描述,這些
選項告訴 Solr 在索引和搜索期間如何處理內容。
現在,查看以下圖片 中列出的重要屬性的子集:
在這就先提壹下solr的重要文件之壹,就是schema.xml的配置文件。
(壹) schema.xml
schema.xml這個配置文件可以在妳下載solr包的安裝解壓目錄的\solr\example\solr\collection1\conf中找到,它就是solr模式關聯的文件。
打開這個配置文件,妳會發現有詳細的註釋。模式組織主要分為三個重要配置:
壹、Fieldtype
Fieldtype:就是屬性類型的意思,像int,String,Boolean種類型,而在此配置文件中,FieldType就有這種定義屬性的功能,看下面的圖片:?
圖片上有我們熟悉的int,String,boolean,那麽,後面的配置,是什麽呢?那麽我們就來介紹壹下後面的參數:
二、Field
Field:是添加到索引文件中出現的屬性名稱,而聲明類型就需要用到上面的type,如圖所示:
ps:①field: 固定的字段設置;②dynamicField: 動態的字段設置,用於後期自定義字段,*號通配符.例如: test_i就是int類型的動態字段。
還有壹個特殊的字段copyField,壹般用於檢索時用的字段這樣就只對這壹個字段進行索引分詞就行了copyField的dest字段如果有多個source壹定要設置