У меня индекс 40M документов, а конфигурация машины - 72 ядра, 500 ГБ ОЗУ и накопители NVME.
Я использую JSON-фасетку в многозначном поле, и она работает нормально независимо от количества совпадающих документов,Но, если я применяю групповое фасетирование с использованием уникальной функции, оно выдает ошибку из памяти и выводит мой solr (когда количество совпадающих документов> 500k).
Я использую следующий синтаксис для группового фасетирования.
json.facet={
categories:{
type : terms,
field : cat,
sort : { x : desc},
facet:{
x : "unique(type)"
}
}
}
Ниже приведен пример схемы, которую я использую
<schema>
<types>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true" />
<fieldType name="lower_string" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="true"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="true"/>
</analyzer>
</fieldType>
</types>
<fields>
<field name="cat" type="lower_string" indexed="true" stored="true" multiValued="true" />
<field name="type" type="string" indexed="true" stored="true" required="false" docValues="true" />
</fields>
<uniqueKey>id</uniqueKey>
</schema>
Есть идеи, как мы можем решить эту проблему?