How To Implement Complex Full-Text Search: The 3 Phases of An Analyzer
How To Implement Complex Full-Text Search: The 3 Phases of An Analyzer
www.thoughts-on-java.org
How to implement complex full-text search
at whitespaces and punctuations. A Tokenizer created by Lucene’s
StandardTokenizerFactory can split these messages easily into
words.
After that is done, you can apply Filter to the tokens to ignore case
and add stemming.
@AnalyzerDef(
name = “textanalyzer”,
tokenizer = @TokenizerDef(factory =
StandardTokenizerFactory.class),
filters = {
@TokenFilterDef(
factory = LowerCaseFilterFactory.class),
@TokenFilterDef(
factory = SnowballPorterFilterFactory.class,
params = { @Parameter(name = “language”,
value = “English”) })
}
)
www.thoughts-on-java.org
How to implement complex full-text search
www.thoughts-on-java.org
How to implement complex full-text search
@Indexed
@Entity
public class Tweet {
@Column
@Field(analyzer = @Analyzer(definition =
“textanalyzer”))
private String message;
...
}
www.thoughts-on-java.org
How to implement complex full-text search
FullTextEntityManager fullTextEm =
Search.getFullTextEntityManager(em);
QueryBuilder tweetQb =
fullTextEm.getSearchFactory().buildQueryBuilder().forEntity(
Tweet.class).get();
Query fullTextQuery =
tweetQb.keyword().onField(Tweet_.message.getName()).mat
ching(searchTerm).createQuery();
List<Tweet> results =
fullTextEm.createFullTextQuery(fullTextQuery,
Tweet.class).getResultList();
www.thoughts-on-java.org