Rahul
Rahul

Reputation: 33

On the fly field value calculation in Solr

I've 10s of fileds defined in my Solr manaed-schema, out of those two are as below:

<field name="isBookmarked" type="boolean" indexed="true" stored="true" required="false" multiValued="false" />

<field name="bookmarkedPathologists" type="string" indexed="true" stored="true" required="false" multiValued="true" />

Now, here I want to set isBookmarked value to 'true' OR'false' if bookmarkedPathologists has SOME value passed while querying on the fly.

Post that I'm sorting on isBookmarked field.

Is it possible? Help anticipated

Upvotes: 1

Views: 306

Answers (2)

Rahul
Rahul

Reputation: 33

I struggled a lot and finally got luck to solve my problem using below possible solution. As on the fly updated changes need to be committed to Solr before getting sorted result on and hence my application which is Solr Client, couldn't get updated/dirty values to sort on, if any.

So I added a Filter Query to my Simple Query Criteria as * exists(query({!v='bookmarkedPathologists:patho'})) : will filter my all(*) results with new on the fly created field named as exists(query({!v='bookmarkedPathologists:patho'})) in JSON response as below:-

    :
    :
    "isBookmarked": false,
    "bookmarkedPathologists": [
      "patho1"
    ],
    :
    :
    "_version_": 1582235372763480000,
    "exists(query({!v='bookmarkedPathologists:patho'}))": false

Post that I just put sort-order over the same i.e. exists(query({!v='bookmarkedPathologists:patho'})) as exists(query({!v='bookmarkedPathologists:patho'})) asc

So Solr returned sorted response over exists(query({!v='bookmarkedPathologists:patho'})).

Solr Function Query helped me a lot from Function Queries

Upvotes: 1

Sunil Kanzar
Sunil Kanzar

Reputation: 1260

As I understand you want to update the field while querying the data from it. SOLR programmed in java language and to interface with SOLR is done using REST kind of services.

And service for search is on:
/solr/<CollectionName>/select

And service for update is on:
/solr/update

So you can`t do both with using same query. But you want to update externally (using other query) then refer.

Upvotes: 0

Related Questions