package com.manning.hsia.dvdstore;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.TermQuery;
import org.testng.annotations.Test;
import java.io.Reader;
import java.io.StringReader;
public class TestManualAnalyzer {
@Test(groups="ch07")
public void testManualAnalyzer() throws Exception {
String search = "The Little Pony";
Reader reader = new StringReader( search );
Analyzer analyzer = new StandardAnalyzer();
TokenStream stream = analyzer.tokenStream( "title", reader );
Token token = new Token();
token = stream.next( token );
BooleanQuery query = new BooleanQuery();
while (token != null) {
if ( token.termLength() != 0 ) {
// create the string out of the token. String(char[])
// copy the char so we are safe to reuse Token
String term =
new String( token.termBuffer(), 0, token.termLength() );
//add it to the query by creating a TermQuery
query.add( new TermQuery( new Term( "title", term ) ), BooleanClause.Occur.SHOULD );
}
token = stream.next( token );
}
assert query.toString().equals( "title:little title:pony" ) : "incorrect query generated";
}
}