Когда использовать локальные параметры в solr - PullRequest
1 голос
/ 13 января 2020

Я изо всех сил пытаюсь обернуть свой мозг вокруг локальных параметров в solr. Когда бы вы на самом деле использовали их для таких вещей, как q.op? Чем ?q={!q.op=OR}solr rocks отличается от ?q=solr rocks&q.op=OR и когда это будет полезно. Главное, что я могу подумать, если у вас есть доступ только к параметру q= через любой API или lib, который вы используете. Это в основном для вложения более сложных поисков, если так, есть ли где-нибудь в документах пример?

Также кажется, что некоторые параметры просто неотъемлемо отличаются, как {!boost... против bq / bf , но я до сих пор не понимаю, почему вы не могли / не должны быть в состоянии сделать что-то вроде ?q=solr rocks&boost=[some boost thing], если локальные параметры довольно взаимозаменяемы.

Есть ли что-то, что я неправильно понимаю в этом процессе ?

Ответы [ 2 ]

2 голосов
/ 13 января 2020

Локальные параметры - это аргументы в запросе Solr, которые задают c для параметра запроса.

Локальные параметры обеспечивают способ добавления метаданных к определенным типам аргументов, таким как строки запроса. (В документации Solr локальные параметры иногда упоминаются как LocalParams.)

Важной частью являются "определенные типы аргументов". Это означает, что он применим не только к параметру q.

Приведенные выше примеры также можно использовать с параметром fq, например, для использования поискового запроса dismax в качестве fq:

fq={!dismax qf=myfield}solr rocks

Еще одна очень полезная вещь - возможность пометить и исключить fq параметры при создании фасетов - т.е. позволяет фильтровать набор результатов без фильтрации используемых документов. для граней:

q=mainquery&fq=status:public&fq={!tag=dt}doctype:pdf&facet=true&facet.field={!ex=dt}doctype

Здесь параметры {!tag} и {!ex} изменяют что-то для , которое задает c параметр , а не для всего запроса (который мог бы сделать параметр запроса do).

Это также полезно при разъединении параметров с поддержкой разыменования параметров, что означает, что вы можете заблокировать сам параметр (и его аргумент) с помощью invariant для параметра запроса в solrconfig, затем используйте новый аргумент запроса, чтобы отправить введенную пользователем строку в запрос:

q={!type=dismax qf=myfield v=$qq}&qq=solr rocks

В этом случае вы можете заблокировать параметр q или что-либо из приведенного выше, затем укажите строку запроса только через qq.

. Существует множество примеров использования localparams для изменения поведения определенного аргумента c, но, надеюсь, это даст Вы представляете, почему и как их использовать.

1 голос
/ 13 января 2020

В прошлом Локальные параметры и разыменование использовались некоторыми приложениями для упрощения запроса и определения определенных значений в solrconfig. xml. Это позволяет обновлять поведение приложения, просто обновляя значения на сервере (например, для настройки значений повышения полей, используемых при поиске), без необходимости обновления клиентского приложения. Приложения, использующие Blacklight , являются примером этого.

Это все еще технически возможно, но по соображениям безопасности использование локальных параметров ограничено в последних версиях Solr.

Запуск строки запроса с локальными параметрами {! Myparser…} используется для переключения с одного анализатора запросов на другой и предназначен для разработчиков системы Solr, а не для конечных пользователей, выполняющих поиск. Чтобы уменьшить негативные побочные эффекты непреднамеренной хакерской способности, Solr теперь ограничивает случаи, когда локальные параметры будут анализироваться, только в тех контекстах, в которых анализатором по умолчанию является "lucene" или "fun c".

...