Использование docValues для вычисления граней на вектор-векторе строкового поля

У меня есть поле в моей схеме SOLR, которая определяется следующим образом:

Это поле используется для поиска, но мы также вычисляем грани этого поля. Границы работают нормально, но используют довольно некоторые ресурсы, возможно, потому что инверсный индекс с этими словами должен быть (re-) инвертирован. Построение поля Valud-Cache после любой фиксации является ужасным медленным и серьезной проблемой производительности. Читая документацию, я думал, что docValues должен решить именно эту проблему. Но если я добавлю docValues="true" в определение поля, я получаю следующую ошибку:

Field type text_t{class=org.apache.solr.schema.TextField,analyzer=org.apache.solr.analysis.TokenizerChain,args={class=solr.TextField, positionIncrementGap=100}} does not support doc values

Любой намек на то, как заставить docValues работать со строковым полем, имеющим termVector? Или как ускорить огранку над такой областью?

1 ответ

Добавьте второе поле рядом с тем, которое у вас есть, с типом StrField. Используйте это новое поле для огранки и делайте то, что хотите, с другим.

В общем, я бы не рекомендовал использовать одно поле для слишком многих целей в Solr. Если вы хотите искать в поле, оптимизируйте его для этой цели поиска, если вы хотите, чтобы фасет в этом поле добавлял второе поле, которое оптимизировано для огранки. Если для этого требуется, чтобы контент дублировался в нескольких полях, пусть будет так.

Если вы идете по Solr Wiki, поле, которое вы хотите использовать для огранки, имеет следующие спецификации

Поскольку поля огранки часто указываются для использования в двух целях: текст, читаемый человеком, и значение детализации детализации, они часто индексируются иначе, чем поля, используемые для поиска и сортировки:

  • Они часто не обозначаются отдельными словами
  • Они часто не отображаются в нижний регистр
  • Человекочитаемая пунктуация часто не удаляется (кроме двойных кавычек)
  • Часто их не нужно хранить, поскольку сохраненные значения будут выглядеть так же, как индексированные значения, а механизм огранки используется для поиска ценности.

Почему я пишу все это, потому что вижу, что вы использовали настраиваемый тип поля, и я предполагаю, что этот тип поля использует некоторую сортировку токенизации. Это объясняет, почему вы начинаете видеть проблемы с производительностью.

licensed under cc by-sa 3.0 with attribution.