- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
æ、ø、å 是挪威语字母表中最新的字母
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å
当我们尝试使用 Hibernate Lucene 对其进行排序时,Å 与 A 组合
,Ø 组合与 Ø
,Æ clibs 与 A
这是错误的。例如:
当前结果:
Aaalu, Åaalu, Baalu, Zaalu,
预期结果:
Aaalu, Baalu, Zaalu, Åaalu,
以下是工作代码:
@AnalyzerDef(name = "myOwnAnalyzer",
tokenizer = @TokenizerDef(factory = KeywordTokenizerFactory.class),
filters = {
@TokenFilterDef(factory = ASCIIFoldingFilterFactory.class),
@TokenFilterDef(factory = LowerCaseFilterFactory.class),
@TokenFilterDef(factory = PatternReplaceFilterFactory.class, params = {
@Parameter(name = "pattern", value = "('-&\\.,\\(\\))"),
@Parameter(name = "replacement", value = " "),
@Parameter(name = "replace", value = "all")
}),
@TokenFilterDef(factory = PatternReplaceFilterFactory.class, params = {
@Parameter(name = "pattern", value = "([^0-9\\p{L} ])"),
@Parameter(name = "replacement", value = ""),
@Parameter(name = "replace", value = "all")
}),
@TokenFilterDef(factory = TrimFilterFactory.class)
}
)
public class KikaPaya implements Serializable {
@Fields({ @Field(index = Index.YES, store = Store.YES), @Field(name = "KikaPayaName_for_sort", index = Index.YES, analyzer = @Analyzer(definition = "myOwnAnalyzer")) })
@Column(name = "NAME", length = 100)
private String name;
主要:
FullTextEntityManager ftem = Search.getFullTextEntityManager(factory.createEntityManager());
QueryBuilder qb = ftem.getSearchFactory().buildQueryBuilder().forEntity( KikaPaya.class ).get();
org.apache.lucene.search.Query query = qb.all().getQuery();
FullTextQuery fullTextQuery = ftem.createFullTextQuery(query, KikaPaya.class);
fullTextQuery.setSort(new Sort(new SortField("KikaPayaName_for_sort", SortField.STRING, true)));
fullTextQuery.setFirstResult(0).setMaxResults(150);
int size = fullTextQuery.getResultSize();
List<KikaPaya> result = fullTextQuery.getResultList();
for (KikaPayauser : result) {
logger.info("KikaPaya Name:" + user.getName());
}
以下是 Lucene 的版本(我无法更改):
<hibernate.version>4.2.8.Final</hibernate.version>
<hibernate.search.version>4.3.0.Final</hibernate.search.version>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.2.8.Final</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>3.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers</artifactId>
<version>3.6.2</version>
</dependency>
有人能建议获得正确结果的方法吗?
最佳答案
我必须承认这并不常见。据我所知,有一个 Lucene 模块使用 ICU 进行区域设置相关排序。
请参阅 lucene-icu 工件,尤其是 ICUCollationKeyFilter 和 ICUCollationKeyAnalyzer(分析器是带有过滤器的 KeywordTokenizer)。您将需要创建将其与 Hibernate Search 一起使用所需的工厂,但这应该非常简单。
不能真正保证它会起作用,但这可能是您最好的选择。
关于java - 如何使用 Hibernate Lucene 搜索对挪威语字符(Æ、Ø 和 Å)进行不区分大小写的排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39264308/
我正在做一个简单的(我认为)文件目录列表,如下所示: $files = scandir(DOCROOT.'files'); foreach($files as $file) { echo '
我在我的挪威网站上使用 jQuery 的自动完成功能。当输入挪威语字符 æ、ø 和 å 时,自动完成功能会建议带有相应字符的单词,但不建议以相应字符开头的单词。看来我必须设法对单词中间的挪威字符进行字
我在Symfony 4.4中的fos上使用了 flex 搜索elasticsearch:6.8.4,由 friendsofsymfony / elastica-bundle“:” ^ 5.0“ 我在f
我是一名优秀的程序员,十分优秀!