久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

solr索引數據的方法是什么

142次閱讀
沒有評論

共計 4031 個字符,預計需要花費 11 分鐘才能閱讀完成。

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

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

準備

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

1

java -jar start.jar

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

索引數據

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

1

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

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

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

表示向索引中添加一個文檔,文檔就是用來搜索的數據源,現在就可以通過管理界面搜索關鍵字”solr”,具體步驟是:

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

數據導入

導入數據到 Solr 的方式也是多種多樣的:

可以使用 DIH(DataImportHandler) 從數據庫導入數據

支持 CSV 文件導入,因此 Excel 數據也能輕松導入

支持 JSON 格式文檔

二進制文檔比如:Word、PDF

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

更新數據

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

numDocs:當前系統中的文檔數量,它有可能大于 xml 文件個數,因為一個 xml 文件可能有多個 doc 標簽。

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

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

刪除數據

通過 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”時不再返回結果。當然 solr 也有數據庫中的事務,執行刪除命令的時候事務自動提交了,文檔就會立即從索引中刪除。你也可以把 commit 設置為 false,手動提交事務。

1

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

執行完上面的命令時文檔并沒有真正刪除,還是可以繼續搜索相關結果,最后可以通過命令:

1

java -jar post.jar –

提交事務,文檔就徹底刪除了。現在把剛剛刪除的文件重新導入 Solr 中來,繼續我們的學習。

刪除所有數據:

1

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

刪除指定數據

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

查詢數據

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

1

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

排序

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

q=video sort=price desc

q=video sort=price asc

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

高亮

網頁搜索中,為了突出搜索結果,可能會對匹配的關鍵字高亮出來,Solr 提供了很好的支持,只要指定參數:

hl=true #開啟高亮功能

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

1

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

 返回的內容中包含:

1

2

3

4

5

highlighting :{

  SOLR1000 :{

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

 }

}

文本分析

文本字段通過把文本分割成單詞以及運用各種轉換方法(如:小寫轉換、復數移除、詞干提取)后被索引,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

現在就可以匹配了

power-shot— Powershot

features:recharing— Rechargeable

1 gigabyte – 1G

到此,關于“solr 索引數據的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計4031字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 比如县| 杂多县| 邛崃市| 仪征市| 临夏市| 林州市| 武山县| 朝阳县| 盈江县| 昭通市| 石嘴山市| 平果县| 会理县| 安化县| 红安县| 星子县| 古交市| 原阳县| 牙克石市| 林西县| 晋宁县| 洛宁县| 城步| 南川市| 普兰县| 黄浦区| 丹棱县| 额尔古纳市| 高邑县| 隆回县| 和田县| 柳河县| 沁阳市| 东莞市| 白河县| 页游| 绥滨县| 洪湖市| 新泰市| 湘乡市| 龙游县|