[ 
https://issues.apache.org/jira/browse/LUCENE-8653?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16748756#comment-16748756
 ] 

Mike Sokolov commented on LUCENE-8653:
--------------------------------------

The reverse reading is required because the FST serializes itself from an 
Object-heavy DAG of Nodes and Arcs into an array of bytes by traversing the DAG 
backwards, but writing forwards into the byte storage. And it optimizes 
straight-line sections of the DAG by eliminating the explicit pointers and just 
implicitly pointing to the (logically) next Node in the byte array, so "next" 
here means *at the next lower byte address*. We can eliminate this reversal by 
reversing the byte array after serialization and fixing-up the explicit 
pointers when we read them. We can't really fix them up in place without more 
major surgery because they are VInts.

> Reverse FST storage so it can be read forward
> ---------------------------------------------
>
>                 Key: LUCENE-8653
>                 URL: https://issues.apache.org/jira/browse/LUCENE-8653
>             Project: Lucene - Core
>          Issue Type: Improvement
>          Components: core/FSTs
>            Reporter: Mike Sokolov
>            Priority: Major
>
> Discussion of keeping FST off-heap led to the idea of ensuring that FST's can 
> be read forward in order to be more cache-friendly and align better with 
> standard I/O practice. Today FSTs are read in reverse and this leads to some 
> awkwardness, and you can't use standard readers so the code can be confusing 
> to work with.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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

Reply via email to