簡體   English   中英

solr stats error:沒有docValues不能在PointField上計算統計信息

[英]solr stats error: Can't calculate stats on a PointField without docValues

我正在嘗試使用solr 7.x獲取搜索的最低/最高價格,以便在此教程之后填充最低/最高價格過濾器:

https://qavi.tech/get-minimum-and-maximum-price-in-solr/

https://lucene.apache.org/solr/guide/6_6/the-stats-component.html

領域:

<field name="price" type="tint" indexed="true" stored="true" required="false" /> 

Solr返回以下錯誤:

“ msg”:“沒有docValues不能在PointField上計算統計信息”,“代碼”:400

這可能是什么原因,我必須在solr_conf中啟用它嗎?

<searchComponent name="stats"     class="solr.StatsComponent" />

這可能取決於在模式中如何定義fieldType。

tint曾經是TrieIntField實現的首選名稱, TrieIntField實現支持排序,統計信息計算等,而無需啟用docValues,因此可能是您的字段類型實現了另一個類(PointField類),該類實際上確實依賴docValues來實現相同的目標。

例如,它可能是一個IntPointField

整數字段(32位有符號整數)。 此類使用基於“維度點”的數據結構對int值進行編碼,該數據結構可非常有效地搜索特定值或值范圍。 對於單值字段,必須使用docValues =“ true”啟用排序。

好吧,實際上它應該是 IntPointField因為從Solr 7.0開始, 不贊成使用 Trie字段,而推薦使用 Point字段:

TrieField采用類型參數來定義要使用的Trie *字段的特定類。 請改用適當的“點字段”類型:

T̶r̶i̶e̶D̶a̶t̶e̶F̶i̶e̶l̶d̶> DatePointField
̶T̶r̶i̶e̶D̶o̶u̶b̶l̶e̶F̶i̶e̶l̶d̶> DoublePointField
T̶r̶i̶e̶F̶l̶o̶a̶t̶F̶i̶e̶l̶d̶> FloatPointField
T̶r̶i̶e̶I̶n̶t̶F̶i̶e̶l̶d̶> IntPointField
T̶r̶i̶e̶L̶o̶n̶g̶F̶i̶e̶l̶d̶> LongPointField

現在,錯誤顯示為“沒有docValues不能在PointField上計算統計信息” ,所以:

  • price不是此處涉及的字段,因為其類型tint將引用(通常是引用)TrieIntField,而不是PointField。 這意味着另一個不使用docValues的PointField負責該錯誤。
  • price是一個PointField,因此首先其類型應該是pint或它所引用的fieldType的名稱是什么,但不能是tint (除非fieldType本身被錯誤命名),其次,它需要啟用docValues來計算統計信息。

因此,在schema.xml中設置適當的field / fieldType定義,顯式引用IntPointField類型,並啟用docValues(向字段或字段類型定義中添加docValues="true" )應該會有所幫助。 例如 :

<fieldType name="pint" class="solr.IntPointField" docValues="true"/>
<field name="price" type="pint" indexed="true" stored="true" required="false" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM