2017-02-07 11 views
0

Я хочу считать многозначное поле в SOLR.Как посчитать многозначное поле в solr

У меня есть две многозначные поля store_id и filter_id и я хочу считать эти значения поля как

store_id = {0,3,7} count_store_id = 3

filter_id = {12, 13,20,22,59,61,62,145} count_filter_id = 8

enter image description here

и в том, что возможно, когда store_id это обновление затем count_store_id также обновление в solr по умолчанию

@@ Ashraful Islam - Как вы сказали, я изменю его, но здесь ничего не произойдет, я приложу изображение, чтобы найти его.

enter image description here

+0

Вы хотите подсчитать размер store_id или filter_id? –

+0

http://stackoverflow.com/questions/6240092/solr-function-query-that-operates-on-count-of-multivalued-field –

+0

Я неправильно понял вопрос по ссылке выше –

ответ

2

Да, как предложил Александр Рафалович, используя определение пользовательского UpdaterequestProcessor, вы можете получить значение счета многозначного поля.

добавить ниже линии в вашем solrconfig.xml

<updateRequestProcessorChain name="multivaluecountnum" default="true"> 
    <processor class="solr.CloneFieldUpdateProcessorFactory"> 
    <str name="source">store_id</str> 
    <str name="dest">store_id_count</str> 
    </processor> 
<processor class="solr.CloneFieldUpdateProcessorFactory"> 
    <str name="source">filter_id</str> 
    <str name="dest">filter_id_count</str> 
    </processor> 
    <processor class="solr.CountFieldValuesUpdateProcessorFactory"> 
    <str name="fieldName">store_id_count</str> 
    </processor> 
<processor class="solr.CountFieldValuesUpdateProcessorFactory"> 
    <str name="fieldName">filter_id_count</str> 
    </processor> 
    <processor class="solr.DefaultValueUpdateProcessorFactory"> 
    <str name="fieldName">store_id_count</str> 
    <int name="value">0</int> 
    </processor> 
<processor class="solr.DefaultValueUpdateProcessorFactory"> 
    <str name="fieldName">filter_id_count</str> 
    <int name="value">0</int> 
    </processor> 
<processor class="solr.LogUpdateProcessorFactory" /> 
    <processor class="solr.RunUpdateProcessorFactory" /> 
</updateRequestProcessorChain> 

Не забудьте добавить RunUpdateProcessorFactory в конце любой цепочки вы определяете в solrconfig.xml

Добавить store_id_count и filter_id_count поля в схеме файла

<field name="store_id_count" type="int" stored="true"/> 
    <field name="filter_id_count" type="int" stored="true"/> 

Reindex docs и query, вы увидите два новых поля store_id_count и filter_id_count в результате.

Надеюсь, что это поможет, Vinod.

+0

Спасибо Vinod, теперь он работает, когда я импортирую данные из базы данных mysql. –

+0

, но есть одна проблема, когда я вставляю новый документ, тогда он не будет работать. он работает только тогда, когда я импортирую данные из данных, не когда я вставляю новый документ в базу данных. –

+0

этот процесс происходит со стороны. для каждого документа во время индексирования в solr вычисляется и добавляется в doc новое поле (счетчик в вашем случае). то обновленный документ с новым полем индексируется в Solr. – vinod