溫馨提示×

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

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

Solr schema怎么編寫(xiě)

發(fā)布時(shí)間:2021-11-09 11:36:12 來(lái)源:億速云 閱讀:143 作者:iii 欄目:關(guān)系型數(shù)據(jù)庫(kù)

這篇文章主要介紹“Solr schema怎么編寫(xiě)”,在日常操作中,相信很多人在Solr schema怎么編寫(xiě)問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Solr schema怎么編寫(xiě)”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

1.uniquekey 作用:當(dāng)add doc的時(shí)候,配置了uniqueKey,后面的doc中uniqueKey相同的會(huì)覆蓋之前的doc,

如果沒(méi)有配置,那么將不會(huì)覆蓋。update的時(shí)候,依據(jù)uniqueryKey信息的話(huà),

所以有update還是建議配上uniqueKey,一來(lái)比較完整配置信息,二來(lái)數(shù)據(jù)排查也方便。

對(duì)應(yīng)id這個(gè)域,必須 stored=true、indexed=true,類(lèi)型建議使用long或者int,而不是string

如果有特殊場(chǎng)景需要按id排序的,就的使用TriedLongField,否則排序時(shí)候會(huì)按文本序排序。

2. defaultSearchField,故名思議就是默認(rèn)查詢(xún)的時(shí)候,查什么域。這句的用法體現(xiàn)在:

queryStr= content:abc 123,  等價(jià) queryStr= content:abc title:123

queryStr= 123 等價(jià) queryStr= title:123

也就是說(shuō)等查詢(xún)的時(shí)候,沒(méi)有指定查那個(gè)域,默認(rèn)就對(duì)應(yīng)defaultSearchField了。

既然是defaultSearchField,那么這個(gè)域indexed=true 是必須的

注意區(qū)分 content:abc 123 與content:”abc 123” 以及 content:(abc 123)

3. 所有int sint tint long slong tlong float sfloat tfloat double sdouble tdouble

都不支持分詞,也無(wú)需分詞。沒(méi)有sshort tshort,只有short。因?yàn)檫@些基本類(lèi)型就一個(gè)值,無(wú)需什么分詞。

對(duì)與int long fload Field,不應(yīng)該出現(xiàn)positionincrmentGap=100

對(duì)與tint tlong tdoube 才有 pricisionStep、positionIncrementGap、sortMissingLast=”true”屬性。

4. 配置分詞

所有TextField才有機(jī)會(huì)分詞

所有TextField才有機(jī)會(huì)執(zhí)行facet

所有TextField 配置的omitTermFreqAndPositions=”true” 才會(huì)起效果,排序中頻率位置信息沒(méi)了

5. omitNorms=”true” 這個(gè)參數(shù)影響域的得分,去掉之后,使得長(zhǎng)短域相同詞得分一致。按照香濃原理,

某個(gè)詞出現(xiàn)在更長(zhǎng)的文本中,或者出現(xiàn)次數(shù)越多,信息值更低。對(duì)應(yīng)如果omitNorms=false,那么

下面 淘寶 出現(xiàn)doc1 淘寶杭州 出現(xiàn)doc2 淘寶杭州網(wǎng)絡(luò)有限公司,命中淘寶的時(shí)候,doc1 得分高于doc2

注意:只有有一個(gè)域的omitNorms=”false”,等價(jià)所有域都保留了omitNorms 這個(gè)位置,盡管omitNorms內(nèi)容是空,

所有,omitNorms在所有域都o(jì)mitNorms=“true”的時(shí)候,才對(duì)索引有幫助。

6. required=”true”

這個(gè)屬性是說(shuō),一旦scham中該域啟用required=“true”,那么建索引的時(shí)候,這個(gè)域時(shí)不能為空的,這個(gè)doc認(rèn)為不完

整。當(dāng)前走dump中心,會(huì)對(duì)null的賦值為””,也就不會(huì)出現(xiàn)沒(méi)有值的情況。但是schema中還是應(yīng)該突出下,如果邏輯上

有需要確保某些字段必須有

7. multiValued=”true”

這個(gè)配置不是說(shuō)某個(gè)域中term是單一or 多個(gè)的意義。即使mulitValued=false,一個(gè)text域同時(shí)可以是很長(zhǎng)的

一段文本,也就是很多term的情況。multiValued=”true”真正含義是:在傳入doc建索引的時(shí)候,當(dāng)一個(gè)域

是mulitValued=”true”,那么可以向該域繼續(xù)add內(nèi)容。等價(jià)在一個(gè)doc中,相同域名的key:value 可以有

多個(gè)。通常情況下,使用map,key也就唯一了,不會(huì)出現(xiàn)多個(gè)相同key,不同value的情況。

另外,配置了mulitValued=”true”,在命中返回文檔的時(shí)候,返回的是list,而不是單個(gè)對(duì)象。

在終搜目前的建索引集中下,這個(gè)multiValued 配與不配已經(jīng)沒(méi)有任何作用影響dump過(guò)程,只是在命中返回的時(shí)候

返回的是list or 單個(gè)對(duì)象。

深入提示,multiValued=”true” 在建索引的時(shí)候,實(shí)際上開(kāi)辟了一個(gè)新的域,允許域名相同的域多次出現(xiàn)。

查詢(xún)的時(shí)候會(huì)查詢(xún)所有域名相同的域,這樣導(dǎo)致檢索性能會(huì)有一定影響,特別是域名膨脹之后,影響非常明顯。

8.特殊分詞

對(duì)應(yīng)提出# ; : 等分詞,其實(shí)建議統(tǒng)一轉(zhuǎn)化為空格分詞,這是系統(tǒng)原生的分詞,并且是基于編譯器層的分詞,性能更好。

沒(méi)有必要為了一個(gè)#,重新定制一份代碼,部署起來(lái)。

9. 排序、區(qū)間、一般查詢(xún)

排序的應(yīng)該是數(shù)字類(lèi)型,建議使用trie類(lèi)型,老的sortable 也是支持的

區(qū)間的也應(yīng)該是數(shù)字類(lèi)型的,建議使用tried類(lèi)型

一般查詢(xún)的多個(gè)數(shù)字組合的話(huà),建議將數(shù)字字符化,然后空格分開(kāi),目前不支持?jǐn)?shù)字類(lèi)型的數(shù)組

10. date tdate等類(lèi)型

在配置data tdate等類(lèi)型的時(shí)候,需要注意時(shí)間格式。

另外,不推薦直接保存,而是保存差值后的int類(lèi)型等。

由于data精度控制不同,將使得所用data域的term成線(xiàn)性增長(zhǎng),這是相當(dāng)恐怕的事情。

這個(gè)長(zhǎng)尾將消耗非常大的內(nèi)存、空間資源。

在索引中term線(xiàn)性的增長(zhǎng)是相當(dāng)恐怖的事情。對(duì)長(zhǎng)尾的處理目前還沒(méi)有特殊優(yōu)化。

通用在索引中term聚集性的增長(zhǎng)也是相當(dāng)恐怖的事情,對(duì)長(zhǎng)鏈處理目前也沒(méi)有特殊優(yōu)化。

11.高級(jí)活

自我校驗(yàn)schema質(zhì)量。

當(dāng)schema配置完畢了,可以采取terminatorquickstart 測(cè)試一下,然后luke工具查看下索引結(jié)構(gòu)。

這樣可能會(huì)發(fā)現(xiàn)一些問(wèn)題??赡芎芏嗟胤降慕Y(jié)構(gòu)可以嘗試優(yōu)化。

到此,關(guān)于“Solr schema怎么編寫(xiě)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

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

AI