Изменить поля запроса по умолчанию в SolrCloud с помощью API - PullRequest
0 голосов
/ 10 мая 2018

Я использую SolrCLoud для поиска документов с несколькими атрибутами. В моем приложении я хотел бы выполнить поиск по всем полям, если в запросе не указано какое-либо конкретное поле, например, запрос term1 AND term2 должен искать эту комбинацию во всех полях.

Чтение документации похоже на то, что вы можете определить поля по умолчанию для поиска.

Я нашел примеров изменения фасетов по умолчанию для обработчика поиска, но не для полей поиска по умолчанию, но не для полей поиска по умолчанию в обработчике запросов.

Кто-нибудь знает, как использовать Solr API для изменения полей по умолчанию в QueryHandler?

Ответы [ 2 ]

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

Вы можете обновить свойства, как показано ниже, используя код Java. Ex. Вы хотите обновить свойства autoCommit и autoSoftCommit.

Map<String, String> props= new HashMap<>();
props.put("solr.autoCommit.maxTime", 10000);
props.put("solr.autoSoftCommit.maxTime", 15000);

StringBuilder command = new StringBuilder("{\"set-property\": {");
   for (Map.Entry<String, String> entry: props.entrySet())
   {
      command.append('"').append(entry.getKey()).append('"').append(':');
      command.append(entry.getValue()).append(',');
   }
   command.setLength(command.length()-1); // remove last comma
   command.append("}}");

   GenericSolrRequest rq = new GenericSolrRequest(SolrRequest.METHOD.POST, "/config", null);
   ContentStream content = new ContentStreamBase.StringStream(command.toString());
   rq.setContentStreams(Collections.singleton(content));
   rq.process(solrClient);
0 голосов
/ 11 мая 2018

Вы можете изменить поле по умолчанию и конфигурацию оператора по умолчанию, используя Config API .

Например, вы можете добавить его, создав новый initParams с помощью:

curl http://localhost:8983/solr/films/config -H 'Content-type:application/json' -d '{
      "add-initparams" : { name : "my-init", "path" : "/select,/browse", 
           "defaults":{ "df":"term1 term2" ,"q.op":"AND" }
      } }'

эта конфигурация будет сохранена в configoverlay.json.

Но я обычно предпочитаю не использовать ConfigAPI и сохранять конфигурацию по умолчанию непосредственно в solrconfig.xml файле.В долгосрочной перспективе это приведет к более четкой конфигурации.

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

<initParams path="/select,/get,standard">
   <lst name="defaults">
      <str name="df">term1 term2</str>
      <str name="q.op">AND</str>
   </lst>
</initParams>

Как вы можете видеть, яопределены df (поля по умолчанию) и q.op (оператор по умолчанию).

Обратите внимание, что в версиях Solr (или SolrCloud) более старыечем Solr5, эти параметры конфигурации были в файле schema.xml.

Посмотрите на Основные изменения в Solr 7

...