com.googlecode.concurrenttrees.solver
Class LCSubstringSolver

java.lang.Object
  extended by com.googlecode.concurrenttrees.solver.LCSubstringSolver

public class LCSubstringSolver
extends Object

Finds the longest common substring in a collection of documents. See Longest common substring problem.

This class internally extends ConcurrentRadixTree and combines it with elements from ConcurrentSuffixTree, but implements its own traversal algorithm.

Author:
Niall Gallagher

Constructor Summary
LCSubstringSolver(NodeFactory nodeFactory)
          Creates a new LCSubstringSolver which will use the given NodeFactory to create nodes.
LCSubstringSolver(NodeFactory nodeFactory, boolean restrictConcurrency)
          Creates a new LCSubstringSolver which will use the given NodeFactory to create nodes.
 
Method Summary
 boolean add(CharSequence document)
          Adds a CharSequence document to the solver.
protected  Set<String> createSetForOriginalKeys()
           
 CharSequence getLongestCommonSubstring()
          Finds the longest common substring in the documents added to the solver so far.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LCSubstringSolver

public LCSubstringSolver(NodeFactory nodeFactory)
Creates a new LCSubstringSolver which will use the given NodeFactory to create nodes.

Parameters:
nodeFactory - An object which creates Node objects on-demand, and which might return node implementations optimized for storing the values supplied to it for the creation of each node

LCSubstringSolver

public LCSubstringSolver(NodeFactory nodeFactory,
                         boolean restrictConcurrency)
Creates a new LCSubstringSolver which will use the given NodeFactory to create nodes.

Parameters:
nodeFactory - An object which creates Node objects on-demand, and which might return node implementations optimized for storing the values supplied to it for the creation of each node
restrictConcurrency - If true, configures use of a ReadWriteLock allowing concurrent reads, except when writes are being performed by other threads, in which case writes block all reads; if false, configures lock-free reads; allows concurrent non-blocking reads, even if writes are being performed by other threads
Method Detail

add

public boolean add(CharSequence document)
Adds a CharSequence document to the solver.

Parameters:
document - The CharSequence to add to the solver
Returns:
True if the document was added, false if it was not because it had been added previously

getLongestCommonSubstring

public CharSequence getLongestCommonSubstring()
Finds the longest common substring in the documents added to the solver so far.

Returns:
The longest common substring

createSetForOriginalKeys

protected Set<String> createSetForOriginalKeys()


Copyright © 2013. All Rights Reserved.