You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ha...@apache.org on 2013/07/24 08:17:37 UTC

svn commit: r1506404 - in /lucene/dev/branches/lucene3069/lucene/core/src/java/org/apache/lucene: codecs/temp/TempFSTTermsReader.java util/fst/FST.java

Author: han
Date: Wed Jul 24 06:17:37 2013
New Revision: 1506404

URL: http://svn.apache.org/r1506404
Log:
fix missing flag in FST

Modified:
    lucene/dev/branches/lucene3069/lucene/core/src/java/org/apache/lucene/codecs/temp/TempFSTTermsReader.java
    lucene/dev/branches/lucene3069/lucene/core/src/java/org/apache/lucene/util/fst/FST.java

Modified: lucene/dev/branches/lucene3069/lucene/core/src/java/org/apache/lucene/codecs/temp/TempFSTTermsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/java/org/apache/lucene/codecs/temp/TempFSTTermsReader.java?rev=1506404&r1=1506403&r2=1506404&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/java/org/apache/lucene/codecs/temp/TempFSTTermsReader.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/java/org/apache/lucene/codecs/temp/TempFSTTermsReader.java Wed Jul 24 06:17:37 2013
@@ -548,6 +548,10 @@ public class TempFSTTermsReader extends 
       }
 
       // nocommit: might be great if we can set flag BIT_LAST_ARC
+      // nocommit: actually we can use first arc as candidate...
+      // it always has NO_OUTPUT as output, and BIT_LAST_ARC set.
+      // but we'll have problem if later FST supports output sharing
+      // on first arc!
 
       /** Virtual frame, never pop */
       Frame loadVirtualFrame(Frame frame) throws IOException {
@@ -701,8 +705,6 @@ public class TempFSTTermsReader extends 
     while (!queue.isEmpty()) {
       final FST.Arc<T> arc = queue.remove(0);
       final long node = arc.target;
-      // nocommit: hmm... for startArc, Arc.toString() is broken???
-      //           BIT_ARC_HAS_FINAL_OUTPUT never set
       //System.out.println(arc);
       if (FST.targetHasArcs(arc) && !seen.get((int) node)) {
         seen.set((int) node);

Modified: lucene/dev/branches/lucene3069/lucene/core/src/java/org/apache/lucene/util/fst/FST.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/core/src/java/org/apache/lucene/util/fst/FST.java?rev=1506404&r1=1506403&r2=1506404&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/core/src/java/org/apache/lucene/util/fst/FST.java (original)
+++ lucene/dev/branches/lucene3069/lucene/core/src/java/org/apache/lucene/util/fst/FST.java Wed Jul 24 06:17:37 2013
@@ -796,6 +796,9 @@ public final class FST<T> {
     if (emptyOutput != null) {
       arc.flags = BIT_FINAL_ARC | BIT_LAST_ARC;
       arc.nextFinalOutput = emptyOutput;
+      if (emptyOutput != NO_OUTPUT) {
+        arc.flags |= BIT_ARC_HAS_FINAL_OUTPUT;
+      }
     } else {
       arc.flags = BIT_LAST_ARC;
       arc.nextFinalOutput = NO_OUTPUT;