Solr學習筆記(一):基礎篇

簡介

Solr是一種開放源碼的闷串、底層的核心技術是使用Lucene 來實現(xiàn)的搜索引擎。

OK狱意,這里提到了search engine湖苞,《solr in action》中,詳細說明了search engine的適用場景髓涯,以及和 DB的區(qū)別袒啼,對我收獲很大,摘抄一段:

1. Search engine

Search engines like Solr are optimized to handle data exhibiting four main characteristics:

  • Text-centric
  • Read- dominant
  • Document- oriented
  • Flexible schema

1.1 Text-centric

A search engine supports non text data such as dates and numbers, but its primary strength is handling text data based on natural language.

If users aren’t interested in the information in the text, a search engine may not be the best solution for your problem.

Think about whether your data is text-centric. The main consideration is whether or not the text fields in your data contain information that users will want to query.

Solr等搜索引擎為搜索包含自然語言的文本內容做了優(yōu)化纬纪,比如電子郵件蚓再,網(wǎng)頁,簡歷包各,PDF文檔摘仅,或是推特、微博问畅、博客這些社交內容等等娃属,都適合用Solr來處理。

1.2 Read- dominant

Think of read-dominant as meaning that documents are read far more often than they’re created or updated.

If you must update existing data in a search engine often, that could be an indication that a search engine might not be the best solution for your needs. Another NoSQL technology, like Cassandra, might be a better choice when you need fast random writes to existing data.

1.3 Document-oriented

In a search engine, a document is a self-contained collection of fields, in which each field only holds data(can have multiple values) and doesn’t contain subfields.

A search engine isn’t the place to store data unless it’s useful for search or displaying results

In general, you should store the minimal set of information for each document needed to satisfy search requirements.

1.4 Flexible schema

In a relational database, every row in a table has the same structure. In Solr, documents can have different fields.

2. Solr vs Lucene

兩者的區(qū)別有:

  • Lucene本質上是搜索庫护姆,不是獨立的應用程序矾端,而Solr是
  • Lucene專注于搜索底層的建設,而Solr專注于企業(yè)應用
  • Lucene不負責支撐搜索服務所必須的管理卵皂,而Solr負責

所以說秩铆,一句話概括: Solr是Lucene面向企業(yè)搜索應用的擴展

Solr 提供了層面搜索灯变、命中醒目顯示并且支持多種輸出格式(包括XML/XSLT 和JSON等格式)殴玛,它附帶了一個基于HTTP 的管理界面。Solr的特性包括:

  • 高級的全文搜索功能
  • 一個真正的擁有動態(tài)字段(Dynamic Field)和唯一鍵(Unique Key)的數(shù)據(jù)模式(Data Schema)
  • 專為高通量的網(wǎng)絡流量進行的優(yōu)化
  • 基于開放接口(XML和HTTP)的標準
  • 綜合的HTML管理界面
  • 可伸縮性-能夠有效地復制到另外一個Solr搜索服務器
  • 使用XML配置達到靈活性和適配性
  • 可擴展的插件體系
  • 支持對結果進行動態(tài)的分組和過濾
  • 高度可配置和可擴展的緩存機制

因為 Solr 包裝并擴展了Lucene添祸,所以它們使用很多相同的術語滚粟。

2. solr 配置

2.1 solrconfig.xml

定義solr的處理程序(handler)和一些擴展程序。其中的配置很多刃泌,其實很多都可以保持默認凡壤。

  1. dataDir:索引存放位置
  2. autoCommit:solr在建索引的時候收到請求并沒用立即寫入文件,而是先放到緩存中耙替,等收到commit命令時才將緩存中得數(shù)據(jù)寫入索引文件亚侠。
  • maxDocs:
    Maximum number of documents to add since the last commit before automatically triggering a new commit.
  • maxTime:
    Maximum amount of time in ms that is allowed to pass since a document was added before automatically triggering a new commit.
  • openSearcher:
    if false, the commit causes recent index changes to be flushed to stable storage, but does not cause a new searcher to be opened to make those changes visible.
  1. autoSoftCommit:
    softAutoCommit is like autoCommit except it causes a 'soft' commit which only ensures that changes are visible but does not ensure that data is synced to disk. This is faster and more near-realtime friendly than a hard commit.

2.2 manage-schema

用于定義索引的字段和字段類型

2.2.1 fieldType:字段類型(int、float林艘、string盖奈、ik...)

<fieldType name="string"  class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
      <tokenizer class="solr.StandardTokenizerFactory"/>
    </analyzer>
    <analyzer type="query">
      <tokenizer class="solr.StandardTokenizerFactory"/>
    </analyzer>
</fieldType>
<fieldType name="text_ik" class="solr.TextField" sortMissingLast="true"  omitNorms="true" autoGeneratePhraseQueries="false">
    <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
    <analyzer type="query" isMaxWordLength="true"  class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

2.2.2 field:字段,定義需要的字段名和它的類型

  1. name 字段名
  2. type 字段類型
  3. indexed 是否進行索引
  4. stored 是否進行保存狐援,如不保存钢坦,可以進行搜索究孕,但不能顯示該字段的內容
  5. required 是否是必須字段,如若是爹凹,該字段必須有值厨诸,否則索引報錯
  6. multiValued 是否允許多值
  7. docValues
  8. sortMissingLast
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />

2.2.3 dynamicFields

動態(tài)字段表示,如果字段的定義沒有在配置中找到禾酱,就在動態(tài)字段類型中進行查找

<dynamicField name="*_txt" type="text_general"    indexed="true"  stored="true" multiValued="true"/> 

2.2.4 copyField

復制源字段到目標字段微酬,maxchars 限制復制的最大長度

<copyField source="body" dest="teaser" maxChars="300"/>  

2.2.5 uniqueKey

相當于數(shù)據(jù)庫中得主鍵,如建索引時遇到重復的颤陶,則會覆蓋掉以前的記錄

<uniqueKey>id</uniqueKey>

2.2.6 defaultSearchField

如果搜索參數(shù)中沒有指定具體的field颗管,那么這是默認的域

<defaultSearchField>text</defaultSearchField>  

2.2.7 solrQueryParser

配置搜索參數(shù)短語間的邏輯,可以是"AND | OR"滓走。

<solrQueryParser defaultOperator="OR" />  
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末垦江,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子搅方,更是在濱河造成了極大的恐慌比吭,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姨涡,死亡現(xiàn)場離奇詭異衩藤,居然都是意外死亡,警方通過查閱死者的電腦和手機涛漂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門赏表,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怖喻,你說我怎么就攤上這事底哗∷晁撸” “怎么了锚沸?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長涕癣。 經(jīng)常有香客問我哗蜈,道長,這世上最難降的妖魔是什么坠韩? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任距潘,我火速辦了婚禮,結果婚禮上只搁,老公的妹妹穿的比我還像新娘音比。我一直安慰自己,他們只是感情好氢惋,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布洞翩。 她就那樣靜靜地躺著稽犁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪骚亿。 梳的紋絲不亂的頭發(fā)上已亥,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音来屠,去河邊找鬼虑椎。 笑死,一個胖子當著我的面吹牛俱笛,可吹牛的內容都是我干的捆姜。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼迎膜,長吁一口氣:“原來是場噩夢啊……” “哼娇未!你這毒婦竟也來了?” 一聲冷哼從身側響起星虹,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤零抬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后宽涌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體平夜,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年卸亮,在試婚紗的時候發(fā)現(xiàn)自己被綠了忽妒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡兼贸,死狀恐怖段直,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情溶诞,我是刑警寧澤鸯檬,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站螺垢,受9級特大地震影響喧务,放射性物質發(fā)生泄漏。R本人自食惡果不足惜枉圃,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一功茴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧孽亲,春花似錦坎穿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽犯祠。三九已至,卻和暖如春酌呆,著一層夾襖步出監(jiān)牢的瞬間衡载,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工隙袁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留痰娱,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓菩收,卻偏偏與公主長得像梨睁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子娜饵,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內容

  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評論 6 342
  • 嚴格來說坡贺,我這篇內容,主要是根據(jù)Solr in Action關于配置的說明箱舞,以及參考Solr的wiki寫的算是讀書...
    明翼閱讀 3,180評論 1 3
  • Solr是什么遍坟? Solr 是Apache下的一個頂級開源項目,采用Java開發(fā)晴股,它是基于Lucene的全文搜索服...
    FTOLsXD閱讀 738評論 0 4
  • 最近在做UI自動化愿伴,寫了幾個小工具,需要自取 __author__ = 'xiaoj' import time i...
    子不語的花未眠閱讀 374評論 0 2
  • OSI七層模型 OSI(Open System Interconnection)电湘,由底層到高層分別為隔节,物理層、數(shù)據(jù)...
    大寫的程序員閱讀 522評論 1 3