Apache Solr是一款搜索,可以將其部署到自己的應(yīng)用或者是站點(diǎn)中,從而為用戶提供更專業(yè)的搜索服務(wù),軟件提供全面搜索功能,所有類型的數(shù)據(jù)都可以搜索,也可以為站點(diǎn)內(nèi)容建立索引,可以為目錄建立索引,適合需要提供搜索服務(wù)的軟件使用,直接將軟件集成到自己的應(yīng)用就可以獲取搜索服務(wù),讓自己的軟件基于Solr查詢資源,快速搜索自己需要的數(shù)據(jù),無論是內(nèi)容檢索還是為辦公軟件建立索引都可以通過這款軟件部署相關(guān)的功能,Solr附帶內(nèi)置的Apache Tika,可輕松為諸如Adobe PDF,Micsoft Word等豐富的內(nèi)容建立索引!
Apache Solr軟件功能
1、REST接口可輕松與任何語言集成。本機(jī)客戶端也可用
2、按任意數(shù)量的字段和數(shù)字字段的復(fù)雜函數(shù)排序,缺少值的文檔可以配置為最后(或第一個(gè))排序
3、函數(shù)查詢可根據(jù)您的數(shù)據(jù)提供強(qiáng)大的相關(guān)調(diào)整功能
4、先進(jìn)的相關(guān)調(diào)整選項(xiàng)使應(yīng)用程序可以微調(diào)結(jié)果以適應(yīng)其苛刻的需求
5、Solr支持多種查詢解析方法,可輕松查找數(shù)據(jù)
6、數(shù)十種查詢類型(布爾,短語,術(shù)語,數(shù)字,字段等)在搜索時(shí)提供了強(qiáng)大的功能
7、開箱即用的默認(rèn)默認(rèn)設(shè)置可以輕松輕松獲得出色的效果,而廣泛的配置選項(xiàng)則可以輕松進(jìn)行微調(diào)
8、可以輕松配置請(qǐng)求處理,以提供端控制并簡化應(yīng)用程序如何請(qǐng)求結(jié)果
9、廣泛的過濾功能使應(yīng)用程序可以控制搜索哪些內(nèi)容以及何時(shí)搜索
10、多種評(píng)分(相似)方法可輕松進(jìn)行實(shí)驗(yàn)和相關(guān)調(diào)整
11、可插拔的查詢解析器意味著每個(gè)應(yīng)用程序都可以提供對(duì)其用戶有意義的查詢接口
12、定義明確的API可捕獲文檔和收集級(jí)別的統(tǒng)計(jì),從而輕松實(shí)現(xiàn)自定義相似模型
13、游標(biāo)(也稱為“深度分頁”)啟用了下一代NoSQL數(shù)據(jù)存儲(chǔ)和分析選項(xiàng)
14、近實(shí)時(shí)(NRT)搜索允許幾乎立即訪問文檔添加和更新
Apache Solr軟件特色
先進(jìn)的全文本搜索功能
由Lucene ?提供支持,Solr實(shí)現(xiàn)了強(qiáng)大的匹配功能,包括短語,通配符,聯(lián)接,分組等等,跨任何數(shù)據(jù)類型
針對(duì)大流量進(jìn)行了優(yōu)化
Solr已在全球范圍內(nèi)得到廣泛驗(yàn)證
基于標(biāo)準(zhǔn)的開放接口-XML,ON和HTTP
Solr使用您用來使應(yīng)用程序構(gòu)建快速的工具
全面的管理界面
Solr附帶內(nèi)置的響應(yīng)式管理用戶界面,可輕松控制您的Solr實(shí)例
易于監(jiān)控
需要深入了解您的實(shí)例嗎?Solr通過JMX發(fā)布負(fù)載數(shù)據(jù)
高度可擴(kuò)展和容錯(cuò)
Solr建立在經(jīng)過戰(zhàn)斗測(cè)試的Apache Zookeeper之上,可輕松進(jìn)行向上和向下擴(kuò)展。Solr開箱即用地進(jìn)行復(fù)制,分發(fā),重新平衡和容錯(cuò)。
靈活且適應(yīng)強(qiáng),配置簡單
Solr’s旨在滿足您的所有需求,同時(shí)簡化配置
近實(shí)時(shí)索引
想立即查看您的更新嗎?Solr利用Lucene的近實(shí)時(shí)索引功能來確保您在看到內(nèi)容時(shí)能夠看到它
可擴(kuò)展的插件架構(gòu)
Solr發(fā)布了許多定義明確的擴(kuò)展點(diǎn),這些擴(kuò)展點(diǎn)使插入索引和查詢時(shí)間插件變得容易。當(dāng)然,由于它是Apache許可的開源,因此您可以更改任何所需的代碼!
需要時(shí)使用架構(gòu),不使用時(shí)使用無架構(gòu)
在開始時(shí)使用Solr的數(shù)據(jù)驅(qū)動(dòng)的無模式模式,在生產(chǎn)時(shí)將其鎖定。
強(qiáng)大的擴(kuò)展
Solr附帶了可選插件,用于為豐富的內(nèi)容編制索引(例如PDF,Word),語言檢測(cè),搜索結(jié)果聚類等
分面搜索和過濾
使用大量的構(gòu)面算法對(duì)數(shù)據(jù)進(jìn)行切片和切塊
地理空間搜索
Solr內(nèi)置的對(duì)空間搜索的支持使啟用基于位置的搜索非常簡單
先進(jìn)的可配置文本分析
Solr附帶了對(duì)世界上大多數(shù)廣泛使用的語言(英語,中文,語,德語,法語等的支持)以及許多其他分析工具的支持,這些工具旨在使索引和查詢內(nèi)容盡可能地靈活
高度可配置和用戶可擴(kuò)展的緩存
Solr內(nèi)置緩存上的細(xì)粒度控件使優(yōu)化能變得容易
Apache Solr使用說明
基本搜尋
可以通過REST客戶端,curl,wget,Chme POSTMAN等來查詢Solr,也可以通過可用于多種編程語言的本機(jī)客戶端來查詢Solr。
管理員UI發(fā)送給Solr的L在上述屏幕截圖的右上角附近以淺灰色顯示。如果單擊它,瀏覽器將顯示原始響應(yīng)。
要使用curl,請(qǐng)?jiān)跒g覽器中使用命令行中的引號(hào)提供相同的L:
curl “http://localhost:8983/solr/techpducts/select?indent=on&q=*:*”
這里發(fā)生的是我們正在使用Solr的查詢參數(shù)(q)和特殊語法,該語法請(qǐng)求索引(*:*)中的所有文檔。但是,由于存在名為的參數(shù)的默認(rèn)值,因此不會(huì)將所有文檔退還給我們,ws您可以在表格中看到10。您可以根據(jù)需要在用戶界面或默認(rèn)值中更改參數(shù)。
Solr具有非常強(qiáng)大的搜索選項(xiàng),而本教程將無法涵蓋所有這些選項(xiàng)。但是我們可以涵蓋一些最常見的查詢類型。
搜索一個(gè)詞
要搜索術(shù)語,請(qǐng)q在“ Solr Admin UI查詢”屏幕中將其輸入為參數(shù)值,并替換*:*為要查找的術(shù)語。
輸入“基”,再次單擊“執(zhí)行查詢”。
如果您喜歡卷曲,請(qǐng)輸入以下內(nèi)容:
curl “http://localhost:8983/solr/techpducts/select?q=foundation”
您會(huì)看到以下內(nèi)容:
響應(yīng)表明有4個(gè)匹配(“numFound”:4)。我們僅在上面的示例輸出中包含一個(gè)文檔,但是由于4個(gè)匹配項(xiàng)低于ws要返回的參數(shù)默認(rèn)值10,因此您應(yīng)該看到所有這4個(gè)匹配項(xiàng)。
注意responseHeader文件之前。該標(biāo)題將包含您為搜索設(shè)置的參數(shù)。默認(rèn)情況下,它僅顯示您為此查詢?cè)O(shè)置的參數(shù),在這種情況下,這僅是您的查詢字詞。
我們返回的文檔包括每個(gè)已建立索引的文檔的所有字段。同樣,這是默認(rèn)行為。如果要限制響應(yīng)中的字段,則可以使用fl參數(shù),該參數(shù)采用逗號(hào)分隔的字段名稱列表。這是管理界面中查詢表單上的可用字段之一。
在“ fl”框中輸入“ id”(不帶引號(hào)),再次單擊“執(zhí)行查詢”?;蛘?,使用curl指定它:
curl “http://localhost:8983/solr/techpducts/select?q=foundation&fl=id”
您應(yīng)該只看到返回的匹配記錄的ID。
現(xiàn)場(chǎng)搜索
所有Solr查詢都使用某些字段來查找文檔。通常,您想同時(shí)在多個(gè)字段中進(jìn)行查詢,而這是到目前為止我們對(duì)“基”查詢所做的工作。這可以通過使用復(fù)制字段來實(shí)現(xiàn),復(fù)制字段已通過此配置集進(jìn)行了設(shè)置。在練習(xí)2中,我們將稍微介紹一下復(fù)制字段。
但是,有時(shí)您希望將查詢限制為單個(gè)字段。這可以使您的查詢更高效,并且結(jié)果與用戶更相關(guān)。
我們的小型樣本數(shù)據(jù)集中的許多數(shù)據(jù)與產(chǎn)品有關(guān)。假設(shè)我們要在索引中找到所有“電子”產(chǎn)品。在查詢屏幕的q框中,輸入“電子產(chǎn)品”(不帶引號(hào)),點(diǎn)擊執(zhí)行查詢。您應(yīng)該得到14個(gè)結(jié)果,例如:
此搜索將在索引字段中的任何位置查找所有包含“電子”一詞的文檔。但是,我們可以從上面看到一個(gè)cat字段(“類別”)。如果我們僅限制搜索“電子”類別的文檔,那么對(duì)于我們的用戶而言,結(jié)果將更加準(zhǔn)確。
q在管理界面的字段中更新您的查詢,使其為cat:electnics?,F(xiàn)在您將獲得12個(gè)結(jié)果:
使用curl,該查詢?nèi)缦滤荆?
curl “http://localhost:8983/solr/techpducts/select?q=cat:electnics”
詞組搜尋
要搜索多詞組短語,請(qǐng)將其用雙引號(hào)引起來:q=”multiple terms here”。例如,通過q在Admin UI框中的引號(hào)中輸入該短語來搜索“ CAS延遲” 。
如果要跟隨curl的注意,請(qǐng)注意,L中術(shù)語之間的空格必須轉(zhuǎn)換為“ +”,如下所示:
curl “http://localhost:8983/solr/techpducts/select?q=”CAS+latency””
我們得到2個(gè)結(jié)果:
合并搜索
默認(rèn)情況下,當(dāng)您在單個(gè)查詢中搜索多個(gè)術(shù)語和/或短語時(shí),Solr僅要求存在其中的一個(gè)以使文檔匹配。包含更多術(shù)語的文檔將在結(jié)果列表中排名更高。
您可以要求在術(shù)語或短語前加上一個(gè)+;;相反,要禁止出現(xiàn)術(shù)語或短語,請(qǐng)?jiān)谄淝懊婕由?。
要查找同時(shí)包含術(shù)語“電子”和“音樂”的文檔,請(qǐng)?jiān)凇肮芾斫缑妗薄安樵儭睒?biāo)簽+electnics +music中的q框中輸入內(nèi)容。
如果使用curl,則必須對(duì)+字符進(jìn)行編碼,因?yàn)樗贚中具有保留的用途(對(duì)空格字符進(jìn)行編碼)。對(duì)于編碼+是%2B如下所示:
curl “http://localhost:8983/solr/techpducts/select?q=%2Belectnics%20%2Bmusic”
您應(yīng)該只會(huì)得到一個(gè)結(jié)果。
要搜索含有“電子”,但文件不包含術(shù)語“音樂”,進(jìn)入+electnics -music在q在管理UI框。同樣,對(duì)于curl,L編碼+如下%2B:
curl “http://localhost:8983/solr/techpducts/select?q=%2Belectnics+-music”
這次您得到13個(gè)結(jié)果。
有關(guān)搜索的更多
我們只是簡單介紹了Solr中可用的搜索選項(xiàng)。有關(guān)更多Solr搜索選項(xiàng),請(qǐng)參閱“搜索”部分。
練習(xí)1總結(jié)
至此,您已經(jīng)了解了Solr如何索引數(shù)據(jù)并完成了一些基本查詢。您現(xiàn)在可以選擇繼續(xù)執(zhí)行下一個(gè)示例,該示例將介紹更多Solr概念,例如構(gòu)面結(jié)果和管理模式,或者您也可以自行刪除。
如果您決定不繼續(xù)本教程,那么到目前為止我們已建立索引的數(shù)據(jù)對(duì)您來說可能沒有什么價(jià)值。您可以刪除安裝并重新開始,也可以使用bin/solr開始使用的腳本來刪除此:
bin/solr -c techpducts
創(chuàng)建一個(gè)新:
bin/solr -c -s 2 -rf 2
要停止我們啟動(dòng)的兩個(gè)Solr節(jié)點(diǎn),請(qǐng)發(fā)出命令:
bin/solr stop -all