I tried to debug this to the best of my ability, and it seems the correct name 
for the “raw” evaluator is “val”.

Copied from StreamContext: val=class 
org.apache.solr.client.solrj.io.eval.RawValueEvaluator

I think there’s a small error in stream evaluator documentation of 8.4

https://lucene.apache.org/solr/guide/8_4/stream-evaluator-reference.html

When I used “val” instead of “raw”, I got the expected response:

select(
                search(
                        myCollection,
                        q="*:*",
                        qt="/export",
                        sort="id_str asc",
                        fl="id_str"
                ),
                id_str,
                val(abc) as text
        )

{
  "result-set": {
    "docs": [
      {
        "id_str": "deneme123",
        "text": "abc"
      },
      {
        "EOF": true,
        "RESPONSE_TIME": 70
      }
    ]
  }
}

--ufuk yilmaz


Sent from Mail for Windows 10

From: ufuk yılmaz
Sent: 26 February 2021 16:38
To: solr-user@lucene.apache.org
Subject: Select streaming expression, add a field to every tuple, replaceor raw 
not working

Hello all,

Solr version 8.4

I have a very simple select expression here. What I’m trying to do is to add a 
constant value to incoming tuples.

My collection has only 1 document. Id_str is of type String. Other fields are 
Solr generated.

{
        "_version_":1692761378187640832,
        "id_str":"experiment123",
        "id":"18d658b13b6b072f"}]
  }

My streaming expression:

select(
                search(
                        myCollection,
                        q="*:*",
                        qt="/export",
                        sort="id_str asc",
                        fl="id_str"
                ),
                id_str,
                raw(ttt) as text // Docs state that select works with any 
evaluator. “raw” here is a stream evaluator.
        )

I also tried:

select(
                search(
                        myCollection,
                        q="*:*",
                        qt="/export",
                        sort="id_str asc",
                        fl="id_str"
                ),
                id_str,
                replace(text, null, withValue=raw(ttt)) as text //replace is 
described in select expression documentation. I also tried withValue=ttt 
directly
        )

No matter what I do, response only includes id_str field, without any error:

{
  "result-set":{
    "docs":[{
        "id_str":" experiment123"}
      ,{
        "EOF":true,
        "RESPONSE_TIME":45}]}}

I also tried wrapping text value with quotes, that didn’t work too.

What am I doing wrong?

--ufuk yilmaz

Sent from Mail for Windows 10


Reply via email to