Sitecore lucene greek 搜索是否区分重音?
Sitecore lucene greek search is accent sensitive?
在默认的 Sitecore 8 安装中,我有一个包含很多项目的存储桶。当我在希腊语的 RTE 字段上发出内容搜索查询时,Sitecore 似乎以区分重音的方式处理搜索词,这对希腊语来说是错误的。
有人可以为我指明正确的方向,使索引重音对希腊语不敏感吗?
您需要更换分析仪。关于如何分析这个案例,我想到了两个不错的选择:
使用org.apache.lucene.analysis.el.GreekAnalyzer
。这将满足您的要求,并添加希腊语词干。这可能是最好的选择,除非你真的不想词干提取。
创建使用 GreekLowerCaseFilter
而非标准小写过滤器的自定义分析器。此过滤器将删除变音符号等,因此我相信它会满足您的需求:
public class StandardWithGreekLower extends StopwordAnalyzerBase{
public StandardWithGreekLower() {
}
@Override
protected TokenStreamComponents createComponents(final String fieldName) {
StandardTokenizer src = new StandardTokenizer();
TokenStream filter = new StandardFilter(src);
filter = new GreekLowerCaseFilter(filter);
//If you want to add a stop filter, this would be a good place for it
return new TokenStreamComponents(src, filter);
}
}
问题似乎出在 Sitecore 理解文化并将文化执行上下文分配给其搜索和索引的方式上。
对于特定的解决方案,我们已将 "el-GR" 语言重命名为 "el"(以在 url 中显示 "nicely")。反过来,Sitecore 分配的 CultureInfo 名称为 "el",而不是 "el-GR"。但是在 defaultIndexConfiguration 配置文件中,只有当 CultureExecutionContext 的 CultureInfo 为 el-GR 时才会分配希腊语分析器,因此数据实际上是使用 StandardAnalyzer 索引的,而不是 GreekAnalyzer,因此对重音敏感。
我们添加了额外的配置以涵盖 CultureInfo 名称为 "el" 的情况(实际上复制了 "el-GR" 配置节点)并且在必要的索引重建之后,一切正常。
虽然 Sitecore 会去更改 CultureInfo 对象的名称,但这是相当模糊的...
在默认的 Sitecore 8 安装中,我有一个包含很多项目的存储桶。当我在希腊语的 RTE 字段上发出内容搜索查询时,Sitecore 似乎以区分重音的方式处理搜索词,这对希腊语来说是错误的。
有人可以为我指明正确的方向,使索引重音对希腊语不敏感吗?
您需要更换分析仪。关于如何分析这个案例,我想到了两个不错的选择:
使用
org.apache.lucene.analysis.el.GreekAnalyzer
。这将满足您的要求,并添加希腊语词干。这可能是最好的选择,除非你真的不想词干提取。创建使用
GreekLowerCaseFilter
而非标准小写过滤器的自定义分析器。此过滤器将删除变音符号等,因此我相信它会满足您的需求:public class StandardWithGreekLower extends StopwordAnalyzerBase{ public StandardWithGreekLower() { } @Override protected TokenStreamComponents createComponents(final String fieldName) { StandardTokenizer src = new StandardTokenizer(); TokenStream filter = new StandardFilter(src); filter = new GreekLowerCaseFilter(filter); //If you want to add a stop filter, this would be a good place for it return new TokenStreamComponents(src, filter); } }
问题似乎出在 Sitecore 理解文化并将文化执行上下文分配给其搜索和索引的方式上。
对于特定的解决方案,我们已将 "el-GR" 语言重命名为 "el"(以在 url 中显示 "nicely")。反过来,Sitecore 分配的 CultureInfo 名称为 "el",而不是 "el-GR"。但是在 defaultIndexConfiguration 配置文件中,只有当 CultureExecutionContext 的 CultureInfo 为 el-GR 时才会分配希腊语分析器,因此数据实际上是使用 StandardAnalyzer 索引的,而不是 GreekAnalyzer,因此对重音敏感。
我们添加了额外的配置以涵盖 CultureInfo 名称为 "el" 的情况(实际上复制了 "el-GR" 配置节点)并且在必要的索引重建之后,一切正常。
虽然 Sitecore 会去更改 CultureInfo 对象的名称,但这是相当模糊的...