analyzer
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package de.bstly.board;
|
||||
|
||||
import org.apache.lucene.analysis.core.LowerCaseFilterFactory;
|
||||
import org.apache.lucene.analysis.core.WhitespaceTokenizerFactory;
|
||||
import org.apache.lucene.analysis.miscellaneous.ASCIIFoldingFilterFactory;
|
||||
import org.apache.lucene.analysis.ngram.EdgeNGramFilterFactory;
|
||||
import org.apache.lucene.analysis.snowball.SnowballPorterFilterFactory;
|
||||
import org.hibernate.search.backend.lucene.analysis.LuceneAnalysisConfigurationContext;
|
||||
import org.hibernate.search.backend.lucene.analysis.LuceneAnalysisConfigurer;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* @author _bastler@bstly.de
|
||||
*
|
||||
*/
|
||||
@Configuration
|
||||
public class LuceneConfig implements LuceneAnalysisConfigurer {
|
||||
|
||||
/*
|
||||
* @see org.hibernate.search.backend.lucene.analysis.LuceneAnalysisConfigurer#
|
||||
* configure(org.hibernate.search.backend.lucene.analysis.
|
||||
* LuceneAnalysisConfigurationContext)
|
||||
*/
|
||||
@Override
|
||||
public void configure(LuceneAnalysisConfigurationContext context) {
|
||||
context.analyzer("english").custom().tokenizer(WhitespaceTokenizerFactory.class)
|
||||
.tokenFilter(LowerCaseFilterFactory.class)
|
||||
.tokenFilter(SnowballPorterFilterFactory.class).param("language", "English")
|
||||
.tokenFilter(ASCIIFoldingFilterFactory.class)
|
||||
.tokenFilter(EdgeNGramFilterFactory.class).param("minGramSize", "1")
|
||||
.param("maxGramSize", "10");
|
||||
|
||||
context.analyzer("german").custom().tokenizer(WhitespaceTokenizerFactory.class)
|
||||
.tokenFilter(LowerCaseFilterFactory.class)
|
||||
.tokenFilter(SnowballPorterFilterFactory.class).param("language", "German")
|
||||
.tokenFilter(ASCIIFoldingFilterFactory.class)
|
||||
.tokenFilter(EdgeNGramFilterFactory.class).param("minGramSize", "1")
|
||||
.param("maxGramSize", "10");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -93,16 +93,16 @@ public class SearchManager implements SmartInitializingSingleton {
|
||||
if (classes.contains(Entry.class)) {
|
||||
return searchSession.search(classes)
|
||||
.where(f -> f.bool()
|
||||
.should(f.match().field("title").matching(search)
|
||||
.should(f.match().fields("title", "title_de").matching(search)
|
||||
.boost(settingsManager.getGravity()))
|
||||
.should(f.match().field("text").matching(search)))
|
||||
.should(f.match().fields("text", "text_de").matching(search)))
|
||||
.sort(f -> sortByDate
|
||||
? (asc ? f.field("created").asc() : f.field("created").desc())
|
||||
: (asc ? f.score().asc() : f.score().desc()))
|
||||
.fetch(page * size, size);
|
||||
} else {
|
||||
return searchSession.search(classes)
|
||||
.where(f -> f.bool().should(f.match().field("text").matching(search)))
|
||||
return searchSession.search(classes).where(
|
||||
f -> f.bool().should(f.match().fields("text", "text_de").matching(search)))
|
||||
.sort(f -> sortByDate
|
||||
? (asc ? f.field("created").asc() : f.field("created").desc())
|
||||
: (asc ? f.score().asc() : f.score().desc()))
|
||||
|
||||
@@ -19,6 +19,7 @@ import javax.persistence.Table;
|
||||
import javax.persistence.Transient;
|
||||
|
||||
import org.hibernate.search.engine.backend.types.Projectable;
|
||||
import org.hibernate.search.engine.backend.types.Searchable;
|
||||
import org.hibernate.search.engine.backend.types.Sortable;
|
||||
import org.hibernate.search.mapper.pojo.bridge.mapping.annotation.ValueBridgeRef;
|
||||
import org.hibernate.search.mapper.pojo.mapping.definition.annotation.FullTextField;
|
||||
@@ -56,7 +57,8 @@ public class Comment {
|
||||
private Long parent;
|
||||
@Lob
|
||||
@Column(name = "text", nullable = false)
|
||||
@FullTextField
|
||||
@FullTextField(name = "text", searchable = Searchable.YES, analyzer = "english")
|
||||
@FullTextField(name = "text_de", searchable = Searchable.YES, analyzer = "german")
|
||||
private String text;
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(name = "flagged_status", nullable = false, columnDefinition = "varchar(255) default 'NORMAL'")
|
||||
|
||||
@@ -20,6 +20,7 @@ import javax.persistence.Table;
|
||||
import javax.persistence.Transient;
|
||||
|
||||
import org.hibernate.search.engine.backend.types.Projectable;
|
||||
import org.hibernate.search.engine.backend.types.Searchable;
|
||||
import org.hibernate.search.engine.backend.types.Sortable;
|
||||
import org.hibernate.search.mapper.pojo.bridge.mapping.annotation.ValueBridgeRef;
|
||||
import org.hibernate.search.mapper.pojo.mapping.definition.annotation.DocumentId;
|
||||
@@ -67,11 +68,13 @@ public class Entry {
|
||||
@Column(name = "url")
|
||||
private String url;
|
||||
@Column(name = "title", nullable = false)
|
||||
@FullTextField(name = "title")
|
||||
@FullTextField(name = "title", searchable = Searchable.YES, analyzer = "english")
|
||||
@FullTextField(name = "title_de", searchable = Searchable.YES, analyzer = "german")
|
||||
private String title;
|
||||
@Lob
|
||||
@Column(name = "text")
|
||||
@FullTextField(name = "text")
|
||||
@FullTextField(name = "text", searchable = Searchable.YES, analyzer = "english")
|
||||
@FullTextField(name = "text_de", searchable = Searchable.YES, analyzer = "german")
|
||||
private String text;
|
||||
@Transient
|
||||
private List<String> tags;
|
||||
|
||||
Reference in New Issue
Block a user