Thanks Mikhail for the suggestion.
Now the previous exception has gone. But a new exception has come from 
Field.java.
Here below are the exception details.
========
java.lang.IllegalArgumentException: TokenStream fields cannot be stored
        at org.apache.lucene.document.Field.<init>(Field.java:155)
=========

Can you please suggest here too?

Regards
Rajib


-----Original Message-----
From: Mikhail Khludnev <m...@apache.org>
Sent: 24 April 2025 12:10
To: java-user@lucene.apache.org
Subject: Re: Suggestion needed for a case of Lucene Migration with TokenStream

Hi
Use TextField.TYPE_STORED as the third argument in new Field()
see
https://github.com/apache/lucene-solr/blob/e27f44e3d78dfcec230c97e0a1240e3751daeff9/lucene/core/src/java/org/apache/lucene/document/TextField.java#L35C33-L35C44


On Thu, Apr 24, 2025 at 8:37 AM Saha, Rajib <rajib.s...@sap.com.invalid>
wrote:

> Hi Experts,
>
> We are migrating Lucene from 2.4.1 to 8.11.2.
>
> During Migration for a part of code, we are getting below exception in
> 8.11.2 based changes from Red line colored.
> =============
> java.lang.IllegalArgumentException: TokenStream fields must be indexed and
> tokenized
> at org.apache.lucene.document.Field.<init>(Field.java:152)
>
> I tied few options. But, could not able to resolve the error. Beiiw
> Can somebody of you please help me to identify, where it is going as wrong?
>
> We had code based on 2.4.1 as like below:
> ===================================
> Int currentVal<
> http://10.238.236.101:8080/source/s?defs=currentVal&project=2025_RTM> =
> //some value
> PayloadTokenStream<
> http://10.238.236.101:8080/source/s?defs=PayloadTokenStream&project=2025_RTM>
> tokenStream<
> http://10.238.236.101:8080/source/s?refs=tokenStream&project=2025_RTM> =
> new PayloadTokenStream<
> http://10.238.236.101:8080/source/s?defs=PayloadTokenStream&project=2025_RTM
> >();
> tokenStream<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/serviceplugins/src/com/sap/businessobjects/platform/search/lucene/index/engine/LuceneIndexEngine.java#tokenStream
> >.setPayload<
> http://10.238.236.101:8080/source/s?defs=setPayload&project=2025_RTM
> >(currentVal<
> http://10.238.236.101:8080/source/s?defs=currentVal&project=2025_RTM>);
> lucField<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/serviceplugins/src/com/sap/businessobjects/platform/search/lucene/index/engine/LuceneIndexEngine.java#lucField>
> = new Field<
> http://10.238.236.101:8080/source/s?defs=Field&project=2025_RTM>(config<
> http://10.238.236.101:8080/source/s?defs=config&project=2025_RTM
> >.payloadUid<
> http://10.238.236.101:8080/source/s?defs=payloadUid&project=2025_RTM
> >().name<http://10.238.236.101:8080/source/s?defs=name&project=2025_RTM>,
> tokenStream<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/serviceplugins/src/com/sap/businessobjects/platform/search/lucene/index/engine/LuceneIndexEngine.java#tokenStream
> >);
> doc<http://10.238.236.101:8080/source/s?defs=doc&project=2025_RTM>.add<
> http://10.238.236.101:8080/source/s?defs=add&project=2025_RTM>(lucField<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/serviceplugins/src/com/sap/businessobjects/platform/search/lucene/index/engine/LuceneIndexEngine.java#lucField
> >);
>
> ......
> public class PayloadTokenStream<
> http://10.238.236.101:8080/source/s?refs=PayloadTokenStream&project=2025_RTM>
> extends TokenStream<
> http://10.238.236.101:8080/source/s?defs=TokenStream&project=2025_RTM>{
> public static String<
> http://10.238.236.101:8080/source/s?defs=String&project=2025_RTM>
> UID_PAYLOAD_START_VAL<
> http://10.238.236.101:8080/source/s?refs=UID_PAYLOAD_START_VAL&project=2025_RTM>
> = "_UID_";
>               private Token<
> http://10.238.236.101:8080/source/s?defs=Token&project=2025_RTM> token<
> http://10.238.236.101:8080/source/s?refs=token&project=2025_RTM> = new
> Token<http://10.238.236.101:8080/source/s?defs=Token&project=2025_RTM
> >(UID_PAYLOAD_START_VAL<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#UID_PAYLOAD_START_VAL
> >,0,0);
>               private byte[] buffer<
> http://10.238.236.101:8080/source/s?refs=buffer&project=2025_RTM> = new
> byte[4];
>               private boolean returnToken<
> http://10.238.236.101:8080/source/s?refs=returnToken&project=2025_RTM> =
> false;
>
>               public void setPayload<
> http://10.238.236.101:8080/source/s?refs=setPayload&project=2025_RTM>(int
> uid<http://10.238.236.101:8080/source/s?refs=uid&project=2025_RTM>){
>                              buffer<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#buffer>[0]
> = (byte)uid<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#uid
> >;
>                              buffer<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#buffer>[1]
> = (byte)(uid<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#uid
> >>>8);
>                              buffer<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#buffer>[2]
> = (byte)(uid<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#uid
> >>>16);
>                              buffer<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#buffer>[3]
> = (byte)(uid<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#uid
> >>>24);
>                              token<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#token
> >.setPayload<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#setPayload>(new
> Payload<http://10.238.236.101:8080/source/s?defs=Payload&project=2025_RTM
> >(buffer<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#buffer
> >));
>                              returnToken = true;
>               }
>               public Token<
> http://10.238.236.101:8080/source/s?defs=Token&project=2025_RTM> next<
> http://10.238.236.101:8080/source/s?refs=next&project=2025_RTM>() throws
> IOException<
> http://10.238.236.101:8080/source/s?defs=IOException&project=2025_RTM>{
>                              if (returnToken<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#returnToken>){
> returnToken<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#returnToken>
> = false; return token<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#token>;
> }
>                              else { return null<
> http://10.238.236.101:8080/source/s?defs=null&project=2025_RTM>; }
>
>               }
> }
>
>
> We have made code based on 8.11.2 as like below:
> ==========================================
> PayloadTokenStream tokenStream = new PayloadTokenStream();
> tokenStream.setPayload(currentVal);
> FieldType fieldType = new FieldType();
> lucField = new Field(config.payloadUid().name, tokenStream, fieldType);
> doc.add(lucField);
> ----
> public class PayloadTokenStream<
> http://10.238.236.101:8080/source/s?refs=PayloadTokenStream&project=2025_RTM>
> extends TokenStream<
> http://10.238.236.101:8080/source/s?defs=TokenStream&project=2025_RTM>{
> public static String<
> http://10.238.236.101:8080/source/s?defs=String&project=2025_RTM>
> UID_PAYLOAD_START_VAL<
> http://10.238.236.101:8080/source/s?refs=UID_PAYLOAD_START_VAL&project=2025_RTM>
> = "_UID_";
> private byte[] buffer<
> http://10.238.236.101:8080/source/s?refs=buffer&project=2025_RTM> = new
> byte[4];
>               private boolean returnToken<
> http://10.238.236.101:8080/source/s?refs=returnToken&project=2025_RTM> =
> false;
>
>               public void setPayload<
> http://10.238.236.101:8080/source/s?refs=setPayload&project=2025_RTM>(int
> uid<http://10.238.236.101:8080/source/s?refs=uid&project=2025_RTM>){
>                              buffer<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#buffer>[0]
> = (byte)uid<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#uid
> >;
>                              buffer<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#buffer>[1]
> = (byte)(uid<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#uid
> >>>8);
>                              buffer<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#buffer>[2]
> = (byte)(uid<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#uid
> >>>16);
>                              buffer<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#buffer>[3]
> = (byte)(uid<
> http://10.238.236.101:8080/source/xref/2025_RTM/platform.services.search.java/framework/java/sdk/src/com/sap/businessobjects/platform/search/sdk/index/PayloadTokenStream.java#uid
> >>>24);
>                              PayloadAttributeImpl attributeImpl = new
> PayloadAttributeImpl(new BytesRef(buffer));
>                             addAttributeImpl(attributeImpl);
>                              returnToken = true;
>               }
>               public boolean incrementToken() throws IOException {
>                              if (returnToken){
>                                            returnToken = false;
>                                            return true;
>                              }
>                              else {
>                                            return false;
>                              }
>               }
> }
>
> Regards
> Rajib
>
>

--
Sincerely yours
Mikhail Khludnev

Reply via email to