/*
* Created on Apr 13, 2006
*/
package org.openedit.data.lucene;
import java.io.Reader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.core.KeywordTokenizer;
import org.apache.lucene.analysis.core.LowerCaseFilter;
import org.apache.lucene.analysis.core.WhitespaceTokenizer;
import org.apache.lucene.util.Version;
/**
* ID's must be separated by spaces and will become case insenstive
* You can use any chars in the ID
* Will produce exact matches
*
* @author cburkey
*
*/
public class RecordLookUpAnalyzer extends Analyzer
{
protected boolean fieldUseTokens = true;
public RecordLookUpAnalyzer()
{
}
public RecordLookUpAnalyzer( boolean inUseTokens )
{
setUseTokens(inUseTokens);
}
@Override
protected TokenStreamComponents createComponents(String inFieldName, Reader inReader)
{
Tokenizer source = null;
if( isUseTokens())
{
source = new WhitespaceTokenizer(Version.LUCENE_41, inReader);
}
else
{
source = new KeywordTokenizer(inReader);
}
TokenStream filter = new LowerCaseFilter(Version.LUCENE_41, source);
return new TokenStreamComponents(source,filter);
}
/*
public TokenStream tokenStream(String fieldName, Reader reader)
{
if( isUseTokens())
{
TokenStream result = new WhitespaceTokenizer(Version.LUCENE_31, reader);
result = new LowerCaseFilter(Version.LUCENE_31, result);
//result = new NullFilter(result); //for debug
return result;
}
else
{
return new LowerCaseFilter(Version.LUCENE_31, new OneToken(reader));
}
}
*/
public boolean isUseTokens()
{
return fieldUseTokens;
}
public void setUseTokens(boolean inTokens)
{
fieldUseTokens = inTokens;
}
/*
class OneToken extends Tokenizer
{
Token fieldToken;
public OneToken(Reader inStream)
{
super(inStream);
String token;
try
{
token = new BufferedReader(inStream).readLine();
fieldToken = new Token(token,0,token.length());
} catch (IOException e)
{
// TODO Auto-generated catch block
throw new OpenEditException(e);
}
}
public boolean incrementToken() throws IOException
{
if( fieldToken != null)
{
Token toreturn = fieldToken;
fieldToken = null;
return true;
}
return false;
}
}
*/
}