Использование docValues с динамическим полем solr
У меня есть поле Solr как -
<dynamicField name="storeSKUColor_*" type="string" multiValued="true" indexed="false" stored="true" />
Проблема в том, что это поле занимает слишком много времени при извлечении данных с использованием solrJ.
Я думал сделать это поле как - stored="false" docValues="true"
,
Solr не выдавал никаких ошибок и данные индексируются правильно.
Удобство использования этого поля -
- На этом поле нет сортировки / огранки.
- Используется только отображаемое значение.
Я хочу сделать выборку данных быстрее, используя solrJ. Я не могу найти надлежащую документацию о том, stored=true
или же multivalued=true
помощь в исполнении.
Я знаю, что solrJ использует ленивую загрузку для полей, которые stored=true
,
Может кто-нибудь, пожалуйста, руководство по этому вопросу.
1 ответ
multiValued - это не производительность, а то, что одно поле может иметь несколько значений в одном документе. Если вам не нужно ничего делать, кроме как сохранить поле - и ВСЕ возвращаемые поля совместимы с docValues="true"
- использовать docValues:
В случаях, когда запрос возвращает только поля docValues, производительность может улучшиться, поскольку для возврата сохраненных полей требуется чтение и распаковка диска, тогда как для возврата полей docValues в списке fl требуется только доступ к памяти.
Если нет, используйте docValues="false" indexed="false" stored="true"
для поля, так как это должен быть самый быстрый способ получить значение поля (но вы можете сравнить его для своего варианта использования).
Обратите внимание, что возвращение DocValues вместе с "обычными" сохраненными полями во время запроса влияет на производительность, что хранимые поля могут быть недоступны, поскольку DocValues ориентированы на столбцы и, следовательно, могут потребовать дополнительных затрат на извлечение для каждого возвращаемого документа.
Избегайте извлечения полей, которые вы не используете - вы можете сделать это с solrQuery.setParam('fl', '...')
,