Использование Solr docValues

Я планирую попробовать Solr docValues, чтобы, надеюсь, улучшить производительность фасетов и сортировки. У меня есть несколько вопросов по этой функции:

  1. Если я включу docValues, будет ли Solr создавать прямой индекс (для фасетирования) в дополнение к отдельному обратному индексу (для поиска)? Или Solr просто создаст ТОЛЬКО форвардный индекс? (что приводит к увеличению производительности при фасетировании в обмен на потерю производительности при поиске)
  2. Если я хочу выполнить фасетирование и поиск в одном поле, что лучше всего? Должен ли я установить indexed = true и docValues ​​= true в одном и том же поле или мне следует создать поле копии, в котором исходное поле имеет indexed = true, а поле назначения имеет docValues ​​= true? (т.е. оптимизировать исходное поле для поиска, а целевое поле для фасетирования; это вообще необходимо?)
  3. На следующей странице документации из Datastax говорится : "для фасетирования с использованием docValues ​​в схеме необходимо указать multiValued =" true ", даже если поле является полем фасета с одним значением". Я немного запутался - это верно только для полей копирования (dest), которые должны использоваться с docvalues, или это верно даже для полей, не являющихся копиями?

Я использую Datastax Enterprise 4.5.2


person PJ.    schedule 21.10.2014    source источник
comment
От: cwiki.apache.org/confluence/display/solr/DocValues ​​ I не думаю, что вам нужно поле для копирования. Прямая интерпретация документа fwd заключается в том, что установка indexed=true создаст инвертированный индекс, а docValues=true создаст прямой индекс. Установка multiValued=true не повредит, если поле однозначное. Так что просто попробуйте и посмотрите.   -  person arun    schedule 22.10.2014


Ответы (1)


Реализация фасетирования Solr будет использовать DocValues ​​только в том случае, если они помечены как многозначные, поэтому, если ваше поле действительно многозначно, я бы предложил использовать несохраненное поле копии с multiValued = true и docValues ​​= true, чтобы избежать сохранения ваших однозначное поле в виде списка / набора Cassandra.

person sbtourist    schedule 22.10.2014
comment
Могу ли я просто пометить однозначное поле как многозначное? например объявить столбец CQL string / int как многозначное поле строки / int в Solr? Есть ли в этом вред? (например, проблема с производительностью). Одно из полей, в котором я хочу включить docValues, оказалось картой коллекции CQL. И поскольку этот тип данных обрабатывается в Solr как динамическое поле, боюсь, я столкнусь с упомянутым здесь ограничением: datastax.com/documentation/datastax_enterprise/4.5/ Поля схемы Solr, которые являются как динамическими, так и многозначными для ядер Solr с поддержкой CQL (только) - person PJ.; 22.10.2014
comment
Многозначные поля будут храниться в виде списков / наборов, что сделает вашу модель данных немного неуклюжей, если они на самом деле являются одиночными значениями. В вашем конкретном случае вы вообще не можете этого сделать, поскольку вы не можете хранить динамические многозначные поля с таблицами CQL, но вы можете скопировать сохраненное динамическое поле в несохраненное динамическое многозначное поле, см. cwiki.apache.org/confluence/display/solr/Copying+Fields. - person sbtourist; 22.10.2014
comment
Просто для пояснения: требуется ли многозначный атрибут только для фасетирования или для сортировки, фильтрации и группировки? Меня немного беспокоят дополнительные требования к хранилищу, которые я понесу при настройке нескольких полей копирования только для размещения docValues - person PJ.; 23.10.2014
comment
Я пробовал это, но Solr выдает ошибку всякий раз, когда я пытаюсь использовать многозначные поля DV для сортировки, группировки и статистики. Мне удалось использовать только многозначные поля DV для фасетирования. Итак, еще раз: требование многозначного атрибута справедливо только для фасетирования? т.е. для сортировки / группировки / фильтрации / статистики поля DV могут быть (или должны быть) однозначными. Если бы я использовал однозначные поля DV для сортировки / группировки / фильтрации / статистики, есть ли способ проверить, действительно ли они используются моими запросами? - person PJ.; 02.03.2015