/* ********************************************************************** **
** Copyright notice **
** **
** (c) 2005-2006 RSSOwl Development Team **
** http://www.rssowl.org/ **
** **
** All rights reserved **
** **
** This program and the accompanying materials are made available under **
** the terms of the Eclipse Public License v1.0 which accompanies this **
** distribution, and is available at: **
** http://www.rssowl.org/legal/epl-v10.html **
** **
** A copy is found in the file epl-v10.html and important notices to the **
** license from the team is found in the textfile LICENSE.txt distributed **
** in this package. **
** **
** This copyright notice MUST APPEAR in all copies of the file! **
** **
** Contributors: **
** RSSOwl Development Team - initial API and implementation **
** **
** ********************************************************************** */
package org.rssowl.core.internal.persist.search;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.CharTokenizer;
import org.apache.lucene.analysis.LowerCaseFilter;
import org.apache.lucene.analysis.TokenStream;
import java.io.Reader;
/**
* The <code>LowercaseDelimiterAnalyzer</code> will tokenize the input by the
* given delimiter char. In addition, all <code>Token</code>s get lowercased.
*
* @author bpasero
*/
public class LowercaseDelimiterAnalyzer extends Analyzer {
private final char fDelim;
/**
* The <code>LowercaseDelimiterAnalyzer</code> will tokenize the input by
* the given delimiter char. In addition, all <code>Token</code>s get
* lowercased.
*
* @param delim the char that is used to separate tokens.
*/
public LowercaseDelimiterAnalyzer(char delim) {
fDelim = delim;
}
/*
* @see org.apache.lucene.analysis.KeywordAnalyzer#tokenStream(java.lang.String,
* java.io.Reader)
*/
@Override
public TokenStream tokenStream(String fieldName, Reader reader) {
/* Split at delim Char */
TokenStream result = new CharTokenizer(reader) {
@Override
protected boolean isTokenChar(char c) {
return c != fDelim;
}
};
/* Lowercase */
result = new LowerCaseFilter(result);
return result;
}
}