Запрос Apache Solr со значениями JSON в скобках - PullRequest
1 голос
/ 02 июля 2019

При использовании поискового инструмента Apache Solr (на локальном хосте), когда я запрашиваю *: * (вернуть все), запрос GET возвращает результаты в следующем формате:

  "responseHeader":{
    "zkConnected":true,
    "status":0,
    "QTime":12,
    "params":{
      "q":"*:*",
      "_":"1562080387377"}},
  "response":{"numFound":164,"start":0,"maxScore":1.0,"docs":[
      {
        "id":"1",
        "name":["Maria Atkinson"],
        "email":["krandolph@yahoo.com"],
        "phone_number":["(408)500-6026x750"],
        "password":["password"],
        "_version_":1637959617282572288},

где все значения в квадратных скобках.

Это проблема, потому что я не могу получить результаты на основе имени запроса, например, запрос select?q=Maria ничего не возвращает.

Я выполнил POST-запрос файла JSON с помощью следующей команды в Терминале: bin/post -c techproducts /Users/**/Desktop/**/upload.json

Мои 2 вопроса:

  1. Что вызывает поведение в квадратных скобках?

  2. Как запросить значения, заключенные в квадратные скобки?

Примечание

При загрузке моего файла JSON значения не заключаются в квадратные скобки в следующем формате:

[{"id": 1, "name": "Maria Atkinson", "email": "krandolph@yahoo.com", "phone_number": "(408)500-6026x750", "password": "password"}, ...

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Проверьте ваш schema.xml. Поля должны иметь многозначные значения как true. Измените то же самое на ложное. Как только вы измените multiValued=false в schema.xml для всех ваших полей. Повторите индексирование данных еще раз.

MultiValued определяет в схеме, разрешено ли для поля более одного значения. Например: если у меня есть fieldType с именем ID, который multiValued=true индексирует документ, такой как: doc { id : [ 1, 2] ... }.

Пометьте поля как multiValued=false. Переиндексировать данные.

Ваша проблема с поиском будет решена.

0 голосов
/ 09 июля 2019

В дополнение к ответам от Abhijit и MatsLindh в качестве поля по умолчанию для Solr используется текст, как определено в документах Solr . Поскольку я не определил поле, по умолчанию оно было текстовым.

Однако в моих проиндексированных документах нет поля с именем text, поэтому ничего не было возвращено.

...