Meer mogelijkheden in SOLR: subqueries in subqueries; en mogelijkheden bij fields
Subqueries in subqueries
In SOLR kan je subqueries gebruiken om meer informatie op te halen bij een document. Dit is erg nuttig als je gekoppeld objecten wilt ophalen, zoals onderliggende paginaâs of afbeeldingen die op een pagina zichtbaar zijn.
Je kan ook subqueries in subqueries gebruikten. Door <naam>:[subquery] in de list met velden van een subquery te plaatsen, geef je aan dat ook hier een subquery moet komen. Zie bijvoorbeeld:
Als argumenten geef je op:
- images.fl":"image_id,meta_url:[subquery]â
- images.meta_url.fl":"*â
- images.meta_url.q":"*"
- images.meta_url.fq":"item_type:meta"
En als resultaat krijg je:
{
"responseHeader":{
"status":0,
"QTime":2,
"params":{
"q":"*:*",
"images.meta_url.fl":"*",
"images.fq":"item_type:image",
"images.meta_url.q":"*",
"images.meta_url.fq":"item_type:meta",
"fl":"page_id,images:[subquery]",
"images.q":"{!terms f=page_id v=$row.page_id}",
"images.fl":"*,image_id,meta_url:[subquery]",
"fq":"item_type:page"}},
"response":{"numFound":2,"start":0,"docs":[
{
"page_id":1,
"images":{"numFound":0,"start":0,"docs":[]
}},
{
"page_id":2,
"images":{"numFound":1,"start":0,"docs":[
{
"id":"acbb7243-11c4-42f3-8021-6b4267600c76",
"image_id":1,
"item_type":"image",
"page_id":2,
"_version_":1637249453494632448,
"meta_url":{"numFound":2,"start":0,"docs":[
{},
{}]
}}]
}}]
}}
(In bovenstaand voorbeeld zijn de twee items onder meta_url leeg, omdat de select API van Solr Admin deze niet teruggeeft â wĂ©l in de query API.)
Alias voor filters
Met de parameter fl geef je aan welke velden je terug wilt krijgen. Je kan ze ook aliassen, door bijvoorbeeld te doen: fl=u:item_url:
{
"responseHeader":{
"status":0,
"QTime":3,
"params":{
"q":"*:*",
"fl":"u:item_url",
"fq":"item_type:meta",
"_":"1561477287406"}},
"response":{"numFound":2,"start":0,"docs":[
{
"u":"/nl/hoi/"},
{
"u":"/nl/hoi-oud/"}]
}}
Zie voor meer opties: https://lucene.apache.org/solr/guide/8_1/common-query-parameters.html#CommonQueryParameters-TheechoParamsParameter
Stats
Een handige functie is stats. Hiermee kan je van een veld extra gegevens terugkrijgen, die met name handig zijn voor bijvoorbeeld het automatisch opbouwen van filters. De volgende data krijg je terug: min, max, count, missing, sum, sumOfSquares, mean, stddev. Een aantal zijn handiger voor meer statistische doeleinden.
Een voorbeeld van het veld page_id (waarbij ik ook aangeef dat ik géén documenten terug wil krijgen, alleen statistieken, via rows = 0):
{
"responseHeader":{
"status":0,
"QTime":1,
"params":{
"q":"*",
"stats":"true",
"start":"0",
"fq":"item_type:*",
"rows":"0",
"_":"1561477287406",
"stats.field":"page_id"}},
"response":{"numFound":5,"start":0,"docs":[]
},
"stats":{
"stats_fields":{
"page_id":{
"min":1.0,
"max":2.0,
"count":3,
"missing":2,
"sum":5.0,
"sumOfSquares":9.0,
"mean":1.6666666666666667,
"stddev":0.5773502691896257}}}}
Zie ook: https://lucene.apache.org/solr/guide/6_6/the-stats-component.html.