2016-08-25 2 views
0

При установке по умолчанию Sitecore 8 у меня есть ведро с множеством элементов. Когда я отправляю запрос на поиск контента в поле RTE на греческом языке, кажется, что Sitecore рассматривает термин поиска как чувствительный к акценту способ, который неверен для греческого.Sitecore lucene greek search отличается чувствительностью?

Может ли кто-нибудь указать мне направление вправо, чтобы сделать акцент без акцента на греческий?

ответ

0

кажется, что этот вопрос с тем, как Sitecore понимает культуры и присваивает контекст выполнения культуры в ее поисков и индексов.

Для конкретного решения мы переименовали язык «el-GR» в «el» (чтобы показать «красиво» в URL-адресе). В свою очередь, Sitecore назначал CultureInfo с именем «el», а не «el-GR». Но в файле конфигурации defaultIndexConfiguration греческий анализатор будет назначен только тогда, когда CultureInfo объекта CultureExecutionContext был el-GR, поэтому данные были фактически проиндексированы с использованием StandardAnalyzer, а не GreekAnalyzer, следовательно, чувствительность акцента.

Мы добавили дополнительную конфигурацию, чтобы покрыть случай, когда CultureInfo имеет имя «el» (скопировал конфигурационный узел «el-GR» на самом деле), и после необходимой перестройки индекса все было в порядке.

Это довольно туманна, хотя почему Sitecore бы пойти и изменить имя объекта CultureInfo ...

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); 
        } 
    } 
    
+0

Ах, я должен был бы сделать его более ясным, что это lucene.NET вопрос. Кроме того, я могу проверить, что я действительно использую греческий анализатор, потому что это то, что делает «установка по умолчанию Sitecore 8», - назначает греческий анализатор, когда культура идентифицируется как греческая. – Yiangos

Смежные вопросы