Solr schema編寫指導
1. uniquekey 作用:當add doc的時候,配置了uniqueKey,後面的doc中uniqueKey相同的會覆蓋之前的doc,
如果沒有配置,那麼將不會覆蓋。update的時候,依據uniqueryKey資訊的話,
所以有update還是建議配上uniqueKey,一來比較完整配置資訊,二來資料排查也方便。
對應id這個域,必須 stored=true、indexed=true,型別建議使用long或者int,而不是string
如果有特殊場景需要按id排序的,就的使用TriedLongField,否則排序時候會按文字序排序。
2. defaultSearchField, 故名思議就是預設查詢的時候,查什麼域。這句的用法體現在:
queryStr= content:abc 123, 等價 queryStr= content:abc title:123
queryStr= 123 等價 queryStr= title:123
也就是說等查詢的時候,沒有指定查那個域,預設就對應defaultSearchField了。
既然是defaultSearchField,那麼這個域indexed=true 是必須的
注意區分 content:abc 123 與content:”abc 123” 以及 content:(abc 123)
3. 所有int sint tint long slong tlong float sfloat tfloat double sdouble tdouble
都不支援分詞,也無需分詞。沒有sshort tshort,只有short。因為這些基本型別就一個值,無需什麼分詞。
對與int long fload Field,不應該出現positionincrmentGap=100
對與tint tlong tdoube 才有 pricisionStep、positionIncrementGap、sortMissingLast=”true”屬性。
4. 配置分詞
所有TextField才有機會分詞
所有TextField才有機會執行facet
所有TextField 配置的omitTermFreqAndPositions=”true” 才會起效果,排序中頻率位置資訊沒了
5. omitNorms=”true” 這個引數影響域的得分,去掉之後,使得長短域相同詞得分一致。按照香濃原理,
某個詞出現在更長的文字中,或者出現次數越多,資訊值更低。對應如果omitNorms=false,那麼
下面 淘寶 出現doc1 淘寶杭州 出現doc2 淘寶杭州網路有限公司,命中淘寶的時候,doc1 得分高於doc2
注意:只有有一個域的omitNorms=”false”,等價所有域都保留了omitNorms 這個位置,儘管omitNorms內容是空,
所有,omitNorms在所有域都omitNorms=“true”的時候,才對索引有幫助。
6. required=”true”
這個屬性是說,一旦scham中該域啟用required=“true”,那麼建索引的時候,這個域時不能為空的,這個doc認為不完
整。當前走dump中心,會對null的賦值為””,也就不會出現沒有值的情況。但是schema中還是應該突出下,如果邏輯上
有需要確保某些欄位必須有
7. multiValued=”true”
這個配置不是說某個域中term是單一or 多個的意義。即使mulitValued=false,一個text域同時可以是很長的
一段文字,也就是很多term的情況。multiValued=”true”真正含義是:在傳入doc建索引的時候,當一個域
是mulitValued=”true”,那麼可以向該域繼續add內容。等價在一個doc中,相同域名的key:value 可以有
多個。通常情況下,使用map,key也就唯一了,不會出現多個相同key,不同value的情況。
另外,配置了mulitValued=”true”,在命中返回文件的時候,返回的是list,而不是單個物件。
在終搜目前的建索引集中下,這個multiValued 配與不配已經沒有任何作用影響dump過程,只是在命中返回的時候
返回的是list or 單個物件。
深入提示,multiValued=”true” 在建索引的時候,實際上開闢了一個新的域,允許域名相同的域多次出現。
查詢的時候會查詢所有域名相同的域,這樣導致檢索效能會有一定影響,特別是域名膨脹之後,影響非常明顯。
8.特殊分詞
對應提出# ; : 等分詞,其實建議統一轉化為空格分詞,這是系統原生的分詞,並且是基於編譯器層的分詞,效能更好。
沒有必要為了一個#,重新定製一份程式碼,部署起來。
9. 排序、區間、一般查詢
排序的應該是數字型別,建議使用trie型別,老的sortable 也是支援的
區間的也應該是數字型別的,建議使用tried型別
一般查詢的多個數字組合的話,建議將數字字元化,然後空格分開,目前不支援數字型別的陣列
10. date tdate等型別
在配置data tdate等型別的時候,需要注意時間格式。
另外,不推薦直接儲存,而是儲存差值後的int型別等。
由於data精度控制不同,將使得所用data域的term成線性增長,這是相當恐怕的事情。
這個長尾將消耗非常大的記憶體、空間資源。
在索引中term線性的增長是相當恐怖的事情。對長尾的處理目前還沒有特殊最佳化。
通用在索引中term聚集性的增長也是相當恐怖的事情,對長鏈處理目前也沒有特殊最佳化。
11.高階活
自我校驗schema質量。
當schema配置完畢了,可以採取terminatorquickstart 測試一下,然後luke工具檢視下索引結構。
這樣可能會發現一些問題。可能很多地方的結構可以嘗試最佳化。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2646562/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用vue優雅地編寫UI元件的幾條指導原則VueUI元件
- path_provider 編譯錯誤指導IDE編譯
- [編譯] 10、kconfig 入門指導教程編譯
- python編碼規範以及推導式的編寫Python
- flutter庫【path_provider】編譯錯誤指導FlutterIDE編譯
- 不如自己寫一個 schema 類庫吧
- IDEA編寫JAVA工程需要導報,這麼做!IdeaJava
- 【AIX】AIX7.1 C編譯環境部署指導說明AI編譯
- 第十一課 Solidity語言編輯器REMIX指導大全SolidREM
- Flutter ModalBottomSheet 指導Flutter
- wxPython使用指導Python
- Git使用指導Git
- json-schema 視覺化編輯器釋出了JSON視覺化
- Solr 入門Solr
- Apache Solr錯誤預設配置導致的RCE(CVE-2019-12409)ApacheSolr
- 用指標編寫程式將輸入的字串倒序輸出指標字串
- 音訊編輯服務UI SDK接入指導及常見問題音訊UI
- 安裝docker指導Docker
- 劍指offer導航
- nginx 入門指導Nginx
- redis叢集指導Redis
- .Net 下 Solr 入門學習系列(一)Solr簡介Solr
- .Net 下 Solr 入門學習系列(二)Solr安裝Solr
- 測試平臺之 vue+ElementUI 編寫導航和路由VueUI路由
- solr研磨之facetSolr
- 使用C#winform編寫滲透測試工具--Web指紋識別C#ORMWeb
- shellcode編寫
- Dockerfile編寫Docker
- 文件編寫
- 編寫DockerFileDocker
- HarmonyOS:NativeWindow 開發指導
- ElasticSearch7使用指導Elasticsearch
- Tun/Tap介面使用指導
- Markdown 公式指導手冊公式
- 學長的方向指導
- .Net 下 Solr 入門學習系列(三)Solr管理控制檯使用Solr
- Json Schema簡介和Json Schema的.net實現庫 LateApexEarlySpeed.Json.SchemaJSON
- ZooKeeper 搭建 solr 叢集Solr