Sitecore lucene希腊搜索是否对重音敏感?

时间:2016-08-25 16:41:39

标签: sitecore lucene.net sitecore8 accent-insensitive

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

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

2 个答案:

答案 0 :(得分: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);
        }
    }
    

答案 1 :(得分:0)

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

对于特定的解决方案,我们更名为" el-GR"语言" el" (显示"很好地"在网址中)。反过来,Sitecore正在分配一个名为" el"而不是" el-GR"的CultureInfo。但是在defaultIndexConfiguration配置文件中,只有当CultureExecutionContext的CultureInfo是el-GR时,才会分配希腊语分析器,因此数据实际上是使用StandardAnalyzer而不是GreekAnalyzer索引的,因此是重音灵敏度。

我们添加了额外的配置,以涵盖CultureInfo名称" el" (实际上复制了" el-GR"配置节点)并在必要的索引重建之后,一切正常。

为什么Sitecore会改变CultureInfo对象的名称,这是相当模糊的......