Solr не включает в результат поля с пустым значением

Индексированные данные в Solr содержат некоторые поля с пустыми значениями. Когда я запускаю q=*:*, он не включает поля с пустыми значениями. Какой параметр мне нужно передать во время запроса, чтобы получить поля с пустыми значениями в результате.

РЕДАКТИРОВАТЬ: я индексирую данные, используя файл csv, записи в файле следующие:

id, dob, name
1,,name1
2,,name2

Теперь, когда я ищу 10 лучших записей, я получаю только два поля. Я хочу получить все поля, даже если для этого не сохранено значение.


person Prometheus    schedule 05.10.2016    source источник


Ответы (4)


Если у элемента нет части данных, solr не сохраняет это поле. Вы должны иметь возможность принудительно хранить пустую строку, установив атрибуты поля required="True" default="".

person GoetzOnline    schedule 11.10.2016

что значит пустые поля? эти поля установлены как indexed=true? Вы устанавливаете пустые пробелы в качестве данных при индексации этих полей? Похоже, вы не отправляете в эту переменную даже пустые данные шаблона, поэтому это и происходит. Например, если я отправляю данные в этом формате {"id":"change.me","title":" "}, где мое поле заголовка пусто, оно индексируется. Но если вы попытаетесь отправить данные, подобные этому, {"id":"change.me","title":}, это отправит ошибку через solr.

person Saurabh Chaturvedi    schedule 05.10.2016
comment
да все поля indexes=true. Я индексирую ядро ​​​​solr, используя файл csv, и данные для поля id, title,name : 1,,abcd будут примерно такими. Я также обновляю формат csv в своем вопросе. - person Prometheus; 05.10.2016

В поле должно быть stored="true"

Перепроверьте в файле schema.xml поле dob. он должен был хранить = "истина"

<field name="dob" type="text_general" indexed="true" stored="true"/>

переиндексируйте документы и снова запросите, это работает.

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

person Vinod    schedule 05.10.2016
comment
Это динамическое поле, похожее на <dynamicField name="*_dob" type="string" indexed="true" stored="true" />. Вот что там написано. - person Prometheus; 05.10.2016
comment
нет никакой разницы, если его динамическое поле. если store=true, то он появится в наборе результатов, например "i_dob":"". Вы переиндексировали? - person Vinod; 05.10.2016
comment
Дело в том, что я не могу указать имя поля в запросе, так как я не знаю имя поля на момент запроса. Все автоматизировано и есть несколько динамических полей. - person Prometheus; 05.10.2016
comment
В порядке. вы копируете поле *_dob в текстовое поле в файле схемы, используя поле копирования. как <copyField source="*_dob" dest="text"/>. по умолчанию solr ищет в текстовом поле, указанном в файле конфигурации. переиндексируй и попробуй. это может сработать. - person Vinod; 05.10.2016
comment
Давайте продолжим обсуждение в чате. - person Vinod; 05.10.2016

Используя запрос, добавьте wt=csv, и вы сможете экспортировать правильно сформированный файл CSV.

Укажите поля, которые вам нужны, с помощью fl=

Пример: select?fl=id,foo,bar&indent=on&q=field:value&stored=true&rows=1000&start=0&wt=json

person roberthuttinger    schedule 15.07.2019