Solr初步使用心得(rails4項(xiàng)目)

首先Solr是什么,簡(jiǎn)單來(lái)說(shuō)就是一個(gè)單獨(dú)的搜索項(xiàng)目,能夠加快搜索速度的api項(xiàng)目,存的數(shù)據(jù)由本地?cái)?shù)據(jù)庫(kù)的數(shù)據(jù)經(jīng)過(guò)項(xiàng)目做一定處理保存上去证逻,然后搜索通過(guò)http傳參的模式,返回所需數(shù)據(jù)類型的結(jié)果(json,xml等)抗斤,下面是百度百科解釋:

Solr是一個(gè)獨(dú)立的企業(yè)級(jí)搜索應(yīng)用服務(wù)器囚企,它對(duì)外提供類似于Web-service的API接口。用戶可以通過(guò)http請(qǐng)求豪治,向搜索引擎服務(wù)器提交一定格式的XML文件洞拨,生成索引扯罐;也可以通過(guò)Http Get操作提出查找請(qǐng)求负拟,并得到XML格式的返回結(jié)果。

本來(lái)直接裝的sunspot_solr的gem包歹河,但是后來(lái)不知道為什么連接不上掩浙,就換成外部的直接跑的Tomcat+solr服務(wù)的模式了花吟,具體服務(wù)配置和安裝就不多說(shuō)了,說(shuō)一下使用吧
1.建立索引:在model里面設(shè)定好需要搜索的字段名和類型,需要注意的是每次只能搜索一個(gè)模型厨姚,索引也是一條記錄一條記錄的建立的衅澈,不能進(jìn)行像數(shù)據(jù)庫(kù)里的鏈接查詢,所以在建立索引的時(shí)候需要給join數(shù)據(jù)配置進(jìn)去谬墙,例如

searchable do

  text :title
  
  text :content do
    #html標(biāo)簽處理
    Sanitize.fragment(self.content)
  end

  #從關(guān)聯(lián)的province處找到區(qū)域的id
  integer :region_id do
    province.region_id
  end
  integer :province_id
  integer :city_id
  integer :town_id

  #關(guān)聯(lián)用途分類的id今布,:multiple就是數(shù)組的意思,例如某條數(shù)據(jù)的usage_category_ids是[1,2,3]
  #而搜索條件給的是[3,4,5],那么這條記錄就會(huì)被檢索出來(lái)
  integer :usage_category_ids, :multiple => true do
    usage_categories.map(&:id)
  end

  time :published_at   
end

在after_save里加上self.index!保證每次保存結(jié)束都可以更新索引拭抬。而對(duì)于當(dāng)前已有數(shù)據(jù)可以用

#參數(shù)意思:緩沖大小部默,模型名,不知道..
rake sunspot:reindex[batch_size,modes,silence]
rake sunspot:reindex[1000,Info]

2.搜索:

# 和Info.select(_select).includes(_includes)一樣
search = Info.solr_search(select: _select ,include: _includes) do
  #全文搜索:指定搜索區(qū)域title,content
  fulltext params[:kw],fields:[:title,:content]

  #any do 包圍起來(lái)的相當(dāng)于 and (region_id=? or province_id=? or city_id not in(1,2,3))
  any do
      with :region_id ,subscription["region"] unless subscription["region"].blank?
      with :province_id ,subscription["province"] unless subscription["province"].blank?
      without :stage_id , [1,2,3] 
  end

  # published_at>=? published_at <=? 
  #對(duì)應(yīng)大于和小于是:greater_than 和less_than
  with(:published_at).greater_than_or_equal_to p[:published_at_gteq] 
  with(:published_at).less_than_or_equal_to p[:published_at_lteq] 

  #分頁(yè)數(shù)據(jù)造虎,可適用于自帶的分頁(yè)方法
  paginate page: p[:page]||1, per_page: p[:per_page]||20

  #排序
  order_by 'published_at' ,:desc
end
@infos = search.results

log中sql為:SELECT id, title, province_id, city_id, town_id, content FROM infos WHERE infos.id IN (5, 111, 11, 8, 10, 7, 9, 12, 6, 14, 17, 20, 13, 16, 19, 15, 18, 21, 23, 26)

也就是說(shuō)solr其實(shí)是根據(jù)搜索條件返回一堆id回來(lái)傅蹂,最終的select和join都是后再執(zhí)行默認(rèn)數(shù)據(jù)庫(kù)的一次查詢

http://www.solr.cc/blog/
http://lucene.apache.org/solr

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市算凿,隨后出現(xiàn)的幾起案子份蝴,更是在濱河造成了極大的恐慌,老刑警劉巖氓轰,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件婚夫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡戒努,警方通過(guò)查閱死者的電腦和手機(jī)请敦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)储玫,“玉大人侍筛,你說(shuō)我怎么就攤上這事∪銮睿” “怎么了匣椰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)端礼。 經(jīng)常有香客問(wèn)我禽笑,道長(zhǎng),這世上最難降的妖魔是什么蛤奥? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任佳镜,我火速辦了婚禮,結(jié)果婚禮上凡桥,老公的妹妹穿的比我還像新娘蟀伸。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布啊掏。 她就那樣靜靜地躺著蠢络,像睡著了一般。 火紅的嫁衣襯著肌膚如雪迟蜜。 梳的紋絲不亂的頭發(fā)上刹孔,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音娜睛,去河邊找鬼髓霞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛畦戒,可吹牛的內(nèi)容都是我干的酸茴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼兢交,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼薪捍!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起配喳,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤酪穿,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后晴裹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體被济,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年涧团,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了只磷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泌绣,死狀恐怖钮追,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情阿迈,我是刑警寧澤元媚,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站苗沧,受9級(jí)特大地震影響刊棕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜待逞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一甥角、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧识樱,春花似錦嗤无、人聲如沸屿笼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至休雌,卻和暖如春灶壶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杈曲。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工驰凛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人担扑。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓恰响,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親涌献。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胚宦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,810評(píng)論 6 342
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)燕垃,斷路器枢劝,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 全文鏈接 第一章 創(chuàng)建一個(gè)blog應(yīng)用第二章 使用高級(jí)特性來(lái)增強(qiáng)你的blog第三章 擴(kuò)展你的blog應(yīng)用第四章上 ...
    夜夜月閱讀 8,852評(píng)論 27 31
  • 從去年訂閱李笑來(lái)老師《通往財(cái)富自由之路》開(kāi)始您旁,那時(shí)覺(jué)得自己財(cái)富自由的目標(biāo)似乎近了好多,從那時(shí)開(kāi)始就不停的“學(xué)習(xí)”各...
    3cea39b597c0閱讀 274評(píng)論 0 0
  • 散步時(shí)不一定要快樂(lè) 快樂(lè)時(shí)不一定去散步 一個(gè)人走 邁著腳下留情的步子 牽著思緒這條大狗 在林中的彎路停了下來(lái) 長(zhǎng)嘯...
    長(zhǎng)馬閱讀 232評(píng)論 4 7