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