0

在默认的 Sitecore 8 安装中,我有一个包含很多项目的存储桶。当我在希腊语的 RTE 字段上发出内容搜索查询时,Sitecore 似乎以区分重音的方式处理搜索词,这对希腊语来说是错误的。

有人可以指出正确的方向,使索引重音对希腊语不敏感吗?

4

2 回答 2

0

您需要更换分析仪。就如何分析而言,对于这种情况,有两个不错的选择:

  • 使用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);
        }
    }
    
于 2016-08-25T17:09:39.953 回答
0

问题似乎在于 Sitecore 理解文化并将文化执行上下文分配给其搜索和索引的方式。

对于特定的解决方案,我们将“el-GR”语言重命名为“el”(在 url 中显示“nicely”)。反过来,Sitecore 分配了一个名为“el”而不是“el-GR”的 CultureInfo。但是在 defaultIndexConfiguration 配置文件中,只有当 CultureExecutionContext 的 CultureInfo 为 el-GR 时才会分配希腊分析器,因此数据实际上是使用 StandardAnalyzer 而不是 GreekAnalyzer 索引的,因此对重音敏感。

我们添加了额外的配置来覆盖 CultureInfo 名称为“el”的情况(实际上复制了“el-GR”配置节点)并且在必要的索引重建之后,一切正常。

虽然 Sitecore 会去更改 CultureInfo 对象的名称,但这是相当模糊的......

于 2016-08-26T11:58:00.753 回答