溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

solr索引數(shù)據(jù)的方法是什么

發(fā)布時間:2021-12-22 17:43:39 來源:億速云 閱讀:152 作者:iii 欄目:云計算

這篇文章主要介紹“solr索引數(shù)據(jù)的方法是什么”,在日常操作中,相信很多人在solr索引數(shù)據(jù)的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”solr索引數(shù)據(jù)的方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

本教程以solr4.8作為測試環(huán)境,jdk版本需要1.7及以上版本。

準備

本文假設(shè)你對Java有初中級以上水平,因此不再介紹Java相關(guān)環(huán)境的配置。下載解壓縮solr,在example目錄有start.jar文件,啟動:

1

java -jar start.jar

瀏覽器訪問:http://localhost:8983/solr/,你看到的就是solr的管理界面

索引數(shù)據(jù)

服務(wù)啟動后,目前你看到的界面沒有任何數(shù)據(jù),你可以通過POSTing命令向Solr中添加(更新)文檔,刪除文檔,在exampledocs目錄包含一些示例文件,運行命令:

1

java -jar post.jar solr.xml monitor.xml

上面的命令是向solr添加了兩份文檔,打開這兩個文件看看里面是什么內(nèi)容,solr.xml里面的內(nèi)容是:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<add>

<doc>

  <field name="id">SOLR1000</field>

  <field name="name">Solr, the Enterprise Search Server</field>

  <field name="manu">Apache Software Foundation</field>

  <field name="cat">software</field>

  <field name="cat">search</field>

  <field name="features">Advanced Full-Text Search Capabilities using Lucene</field>

  <field name="features">OptimizedforHigh Volume Web Traffic</field>

  <field name="features">Standards Based Open Interfaces - XML and HTTP</field>

  <field name="features">Comprehensive HTML Administration Interfaces</field>

  <field name="features">Scalability - Efficient Replication to other Solr Search Servers</field>

  <field name="features">Flexible and Adaptable with XML configuration and Schema</field>

  <field name="features">Good unicode support: h&#xE9;llo (hello with an accent over the e)</field>

  <field name="price">0</field>

  <field name="popularity">10</field>

  <field name="inStock">true</field>

  <field name="incubationdate_dt">2006-01-17T00:00:00.000Z</field>

</doc>

</add>

表示向索引中添加一個文檔,文檔就是用來搜索的數(shù)據(jù)源,現(xiàn)在就可以通過管理界面搜索關(guān)鍵字”solr”,具體步驟是:
solr索引數(shù)據(jù)的方法是什么

點擊頁面下的Execute Query按鈕后右側(cè)就會顯示查詢結(jié)果,這個結(jié)果就是剛才導入進去的solr.xml的json格式的展示結(jié)果。solr支持豐富的查詢語法,比如:現(xiàn)在想搜索字段name里面的關(guān)鍵字”Search”就可以用語法name:search,當然如果你搜索name:xxx就沒有返回結(jié)果了,因為文檔中沒有這樣的內(nèi)容。

數(shù)據(jù)導入

導入數(shù)據(jù)到Solr的方式也是多種多樣的:

  • 可以使用DIH(DataImportHandler)從數(shù)據(jù)庫導入數(shù)據(jù)

  • 支持CSV文件導入,因此Excel數(shù)據(jù)也能輕松導入

  • 支持JSON格式文檔

  • 二進制文檔比如:Word、PDF

  • 還能以編程的方式來自定義導入

更新數(shù)據(jù)

如果同一份文檔solr.xml重復(fù)導入會出現(xiàn)什么情況呢?實際上solr會根據(jù)文檔的字段id來唯一標識文檔,如果導入的文檔的id已經(jīng)存在solr中,那么這份文檔就被最新導入的同id的文檔自動替換。你可以自己嘗試試驗一下,觀察替換前后管理界面的幾個參數(shù):Num Docs,Max Doc,Deleted Docs的變化。

  • numDocs:當前系統(tǒng)中的文檔數(shù)量,它有可能大于xml文件個數(shù),因為一個xml文件可能有多個<doc>標簽。

  • maxDoc:maxDoc有可能比numDocs的值要大,比如重復(fù)post同一份文件后,maxDoc值就增大了。

  • deletedDocs:重復(fù)post的文件會替換掉老的文檔,同時deltedDocs的值也會加1,不過這只是邏輯上的刪除,并沒有真正從索引中移除掉

刪除數(shù)據(jù)

通過id刪除指定的文檔,或者通過一個查詢來刪除匹配的文檔

1

2

java -Ddata=args -jar post.jar"<delete><id>SOLR1000</id></delete>"

java -Ddata=args -jar post.jar"<delete><query>name:DDR</query></delete>"

此時solr.xml文檔從索引中刪除了,再次搜”solr”時不再返回結(jié)果。當然solr也有數(shù)據(jù)庫中的事務(wù),執(zhí)行刪除命令的時候事務(wù)自動提交了,文檔就會立即從索引中刪除。你也可以把commit設(shè)置為false,手動提交事務(wù)。

1

java -Ddata=args  -Dcommit=false-jar post.jar"<delete><id>3007WFP</id></delete>"

執(zhí)行完上面的命令時文檔并沒有真正刪除,還是可以繼續(xù)搜索相關(guān)結(jié)果,最后可以通過命令:

1

java -jar post.jar -

提交事務(wù),文檔就徹底刪除了?,F(xiàn)在把剛剛刪除的文件重新導入Solr中來,繼續(xù)我們的學習。

刪除所有數(shù)據(jù):

1

http://localhost:8983/solr/collection1/update?stream.body=<delete><query>*:*</query></delete>&commit=true

刪除指定數(shù)據(jù)

1

http://localhost:8983/solr/collection1/update?stream.body=<delete><query>title:abc</query></delete>&commit=true

多條件刪除

1

http://localhost:8983/solr/collection1/update?stream.body=<delete><query>title:abc AND name:zhang</query></delete>&commit=true

查詢數(shù)據(jù)

查詢數(shù)據(jù)都是通過HTTP的GET請求獲取的,搜索關(guān)鍵字用參數(shù)q指定,另外還可以指定很多可選的參數(shù)來控制信息的返回,例如:用fl指定返回的字段,比如f1=name,那么返回的數(shù)據(jù)就只包括name字段的內(nèi)容

1

http://localhost:8983/solr/collection1/select?q=solr&fl=name&wt=json&indent=true

  • 排序

    Solr提供排序的功能,通過參數(shù)sort來指定,它支持正序、倒序,或者多個字段排序

    • q=video&sort=price desc

    • q=video&sort=price asc

    • q=video&sort=inStock asc, price desc
      默認條件下,Solr根據(jù)socre倒序排列,socre是一條搜索記錄根據(jù)相關(guān)度計算出來的一個分數(shù)。

  • 高亮

    網(wǎng)頁搜索中,為了突出搜索結(jié)果,可能會對匹配的關(guān)鍵字高亮出來,Solr提供了很好的支持,只要指定參數(shù):

    • hl=true #開啟高亮功能

    • hl.fl=name #指定需要高亮的字段

1

http://localhost:8983/solr/collection1/select?q=Search&wt=json&indent=true&hl=true&hl.fl=features

返回的內(nèi)容中包含:

1

2

3

4

5

"highlighting":{

       "SOLR1000":{

           "features":["Advanced Full-Text <em>Search</em> Capabilities using Lucene"]

       }

}

文本分析

文本字段通過把文本分割成單詞以及運用各種轉(zhuǎn)換方法(如:小寫轉(zhuǎn)換、復(fù)數(shù)移除、詞干提取)后被索引,schema.xml文件中定義了字段在索引中,這些字段將作用于其中.
默認情況下搜索”power-shot”是不能匹配”powershot”的,通過修改schema.xml文件(solr/example/solr/collection1/conf目錄),把features和text字段替換成”text_en_splitting”類型,就能索引到了。

1

2

3

<field name="features"type="text_en_splitting"indexed="true"stored="true"multiValued="true"/>

...

<field name="text"type="text_en_splitting"indexed="true"stored="false"multiValued="true"/>

修改完后重啟solr,然后重新導入文檔

1

java -jar post.jar *.xml

現(xiàn)在就可以匹配了

  • power-shot—>Powershot

  • features:recharing—>Rechargeable

  • 1 gigabyte –> 1G

到此,關(guān)于“solr索引數(shù)據(jù)的方法是什么”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI