java - (Hibernate Search)MultiFieldQueryParser 每个字段不同的分析器

标签 java hibernate lucene hibernate-search

我的一些索引字段使用希腊语分析器,我想对其他一些字段使用英语分析器。我的问题是:在搜索结果时(目前使用 MultiFieldQueryParser),如何为每个字段使用不同的分析器,以便希腊语分析器用于希腊索引字段,英语分析器用于英语索引字段?

最佳答案

这是我找到的解决方案。请评论。

transaction.begin();

PerFieldAnalyzerWrapper wrapper = new PerFieldAnalyzerWrapper(new StandardAnalyzer(Version.LUCENE_30));

wrapper.addAnalyzer("greekTitle", new GreekAnalyzer(Version.LUCENE_30));
wrapper.addAnalyzer("greekDescription", new GreekAnalyzer(Version.LUCENE_30));

String[] fields = {"greekTitle", "greekDescription", "englishTitle", "englishDescription"};

QueryParser queryParser = new MultiFieldQueryParser(Version.LUCENE_30, fields, wrapper);
queryParser.setDefaultOperator(QueryParser.AND_OPERATOR);
org.apache.lucene.search.Query query = queryParser.parse(QueryParser.escape(queryString));

javax.persistence.Query persistenceQuery = 
fullTextEntityManager.createFullTextQuery(query, Item.class);

@SuppressWarnings("unchecked")
List<Item> result = persistenceQuery.getResultList();

transaction.commit();

return result;

关于java - (Hibernate Search)MultiFieldQueryParser 每个字段不同的分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4641074/

相关文章:

java - 使用前序遍历打印时如何按升序打印序列

hibernate - Grails/hibernate : Null Pointer Exception on versioning

java - 命名 Hibernate 查询的 "Named query not known"?

java - 基于 Apache Solr 的 Spring boot 应用程序的搜索功能

java - 嵌入式tomcat返回空白页

java - 如何在我的 Web 服务器 URL 中隐藏 .jsp 扩展名

java - Arraylist 到 2D 数组,然后到 JTable

jquery - Where 子句无法正常工作 : No converter found for return value of type: class java. util.ArrayList

通过外部字段搜索 SOLR

java - lucene 使用通配符搜索明显慢