shahrs87 commented on PR #907:
URL: https://github.com/apache/lucene/pull/907#issuecomment-1183747929

   Thank you @jpountz  for being so patient with me. I tried your above 
suggestion and hit the following problem.
   Locally I removed the following check from BloomFilteringPostingsFormat.java.
   ```
           if (result == Terms.EMPTY) {
             return Terms.EMPTY;
           }
   ```
   
   The following test failed: 
`org.apache.lucene.index.TestPostingsOffsets.testCrazyOffsetGap`
   Can be reproduced by:
    `gradlew :lucene:core:test --tests 
"org.apache.lucene.index.TestPostingsOffsets.testCrazyOffsetGap" -Ptests.jvms=8 
-Ptests.jvmargs=-XX:TieredStopAtLevel=1 -Ptests.seed=66D42010A32F9625 
-Ptests.locale=chr -Ptests.timezone=Asia/Jayapura -Ptests.gui=false 
-Ptests.file.encoding=UTF-8`
   
   The exception stack trace is:
   ```
   field "foo" should have hasFreqs=true but got false
   org.apache.lucene.index.CheckIndex$CheckIndexException: field "foo" should 
have hasFreqs=true but got false
        at 
__randomizedtesting.SeedInfo.seed([66D42010A32F9625:91A6069AD047326B]:0)
        at 
app//org.apache.lucene.index.CheckIndex.checkFields(CheckIndex.java:1434)
        at 
app//org.apache.lucene.index.CheckIndex.testPostings(CheckIndex.java:2425)
        at 
app//org.apache.lucene.index.CheckIndex.testSegment(CheckIndex.java:999)
        at 
app//org.apache.lucene.index.CheckIndex.checkIndex(CheckIndex.java:714)
        at 
app//org.apache.lucene.index.CheckIndex.checkIndex(CheckIndex.java:552)
        at 
app//org.apache.lucene.tests.util.TestUtil.checkIndex(TestUtil.java:343)
        at 
app//org.apache.lucene.tests.store.MockDirectoryWrapper.close(MockDirectoryWrapper.java:909)
        at 
app//org.apache.lucene.index.TestPostingsOffsets.testCrazyOffsetGap(TestPostingsOffsets.java:462)
   ```
   
   The terms object 
[here](https://github.com/apache/lucene/blob/main/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java#L1380)
 is of type 
[PerFieldPostingsFormat#FieldsReader](https://github.com/apache/lucene/blob/main/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldPostingsFormat.java#L352)
   The fieldsProducer object within  PerFieldPostingsFormat#FieldsReader is of 
type 
[BloomFilteringPostingsFormat#BloomFilteredFieldsProducer](https://github.com/apache/lucene/blob/main/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java#L202)
   The delegateFieldsProducer within 
BloomFilteringPostingsFormat#BloomFilteredFieldsProducer is of type 
[Lucene90BlockTreeTermsReader](https://github.com/apache/lucene/blob/main/lucene/core/src/java/org/apache/lucene/codecs/lucene90/blocktree/Lucene90BlockTreeTermsReader.java#L291)
   
   This is the code snippet which I changed within 
`Lucene90BlockTreeTermsReader#terms` method
   ```
     @Override
     public Terms terms(String field) throws IOException {
       assert field != null;
       Terms terms = fieldMap.get(field);
       return terms == null ? Terms.EMPTY : terms;
     }
   ```
   
   From your suggestion instead of returning Terms.EMPTY, I thought to return 
Terms.empty(fieldInfo) with overloaded hasFreqs, hasPositions, etc. methods. 
But the problem is there is no way to get hold of `FieldsInfo` object from 
`field` string. The fieldMap map within Lucene90BlockTreeTermsReader is empty.  
Is it ok to change the method argument for terms method from field String to 
fieldInfo object within Lucene90BlockTreeTermsReader ?  `public Terms 
terms(String field) throws IOException` --> `public Terms terms(FieldInfo 
fieldInfo) throws IOException` I think NO but just wanted to ask.
   
   Please correct me if I am misunderstanding anything. Thank you again.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to