Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-13792

Adding Greek support in Full-Text search

    XMLWordPrintable

Details

    • Suggestion
    • Resolution: Fixed
    • 3.12
    • Indexing
    • We collect Jira feedback from various sources, and we evaluate what we've collected when planning our product roadmap. To understand how this piece of feedback will be reviewed, see our Implementation of New Features Policy.

    Description

      From a SAC case:

      We'd like to have Greek Lucene indexing support added into JIRA. We've done a core modification for one of our customers, but we would really like to see it in the official codeline.

      Objects affected:

      • jira/src/etc/languages/default/com/atlassian/jira/web/action/JiraWebActionSupport.properties
        admin.jira.allowed.language.greek=Greek
        
      • /jira/src/java/com/atlassian/jira/config/properties/APKeys.java
            public class Languages
            {
                public static final String ENGLISH = "english";
                public static final String GERMAN = "german";
                public static final String GREEK = "greek";
                public static final String RUSSIAN = "russian";
                public static final String CJK = "cjk";
                public static final String OTHER = "other";
            }
        
      • jira/src/java/com/atlassian/jira/issue/index/JiraAnalyzer.java
        /*
         * Copyright (c) 2002-2004
         * All rights reserved.
         */
        package com.atlassian.jira.issue.index;
        
        import com.atlassian.jira.ManagerFactory;
        import com.atlassian.jira.config.properties.APKeys;
        import com.atlassian.jira.issue.index.analyzer.CJKAnalyzer;
        import com.atlassian.jira.issue.index.analyzer.EnglishAnalyzer;
        import com.atlassian.jira.issue.index.analyzer.GermanAnalyzer;
        import com.atlassian.jira.issue.index.analyzer.SimpleAnalyzer;
        import org.apache.lucene.analysis.Analyzer;
        import org.apache.lucene.analysis.TokenStream;
        import org.apache.lucene.analysis.el.GreekAnalyzer;
        import org.apache.lucene.analysis.el.GreekCharsets;
        import org.apache.lucene.analysis.ru.RussianAnalyzer;
        import org.apache.lucene.analysis.ru.RussianCharsets;
        
        import java.io.Reader;
        
        public class JiraAnalyzer extends Analyzer
        {
            public static final Analyzer ANALYZER_FOR_INDEXING = new JiraAnalyzer(true);
            public static final Analyzer ANALYZER_FOR_SEARCHING = new JiraAnalyzer(false);
        
            private final Analyzer englishAnalyzer;
            private final Analyzer germanAnalyzer;
            private final Analyzer russianAnalyzer;
            private final Analyzer cjkAnalyzer;
            private final Analyzer otherAnalyzer;
            private final Analyzer greekAnalyzer;
        
            public JiraAnalyzer(boolean indexing)
            {
                this.englishAnalyzer = new EnglishAnalyzer(indexing);
                this.germanAnalyzer = new GermanAnalyzer(indexing);
                this.russianAnalyzer = new RussianAnalyzer(RussianCharsets.UnicodeRussian);
                this.cjkAnalyzer = new CJKAnalyzer(indexing);
                this.otherAnalyzer = new SimpleAnalyzer(indexing);
                this.greekAnalyzer = new GreekAnalyzer(GreekCharsets.UnicodeGreek);
            }
        
            /*
             * Create a token stream for this analyzer.
             */
            public final TokenStream tokenStream(String fieldname, Reader reader)
            {
                final String language = ManagerFactory.getApplicationProperties().getString(APKeys.JIRA_I18N_LANGUAGE_INPUT);
                if (APKeys.Languages.ENGLISH.equals(language))
                {
                    return englishAnalyzer.tokenStream(fieldname, reader);
                }
                else if (APKeys.Languages.GERMAN.equals(language))
                {
                    return germanAnalyzer.tokenStream(fieldname, reader);
                }
                else if (APKeys.Languages.GREEK.equals(language))
                {
                    return greekAnalyzer.tokenStream(fieldname, reader);
                }
                else if (APKeys.Languages.RUSSIAN.equals(language))
                {
                    return russianAnalyzer.tokenStream(fieldname, reader);
                }
                else if (APKeys.Languages.CJK.equals(language))
                {
                    return cjkAnalyzer.tokenStream(fieldname, reader);
                }
                else //'other' or languages that we don't know about yet.
                {
                    return otherAnalyzer.tokenStream(fieldname, reader);
                }
            }
        
        }
        
      • jira/src/java/com/atlassian/jira/web/action/admin/EditApplicationProperties.java
            public Map getAllowedLanguages()
            {
                Map allowedLanguages = new ListOrderedMap();
        
                allowedLanguages.put(APKeys.Languages.ENGLISH, getText("admin.jira.allowed.language.english"));
                allowedLanguages.put(APKeys.Languages.GERMAN, getText("admin.jira.allowed.language.german"));
                allowedLanguages.put(APKeys.Languages.GREEK, getText("admin.jira.allowed.language.greek"));
                allowedLanguages.put(APKeys.Languages.RUSSIAN, getText("admin.jira.allowed.language.russian"));
                allowedLanguages.put(APKeys.Languages.CJK, getText("admin.jira.allowed.language.cjk"));
                allowedLanguages.put(APKeys.Languages.OTHER, getText("admin.jira.allowed.language.other"));
        
                return allowedLanguages;
            }
        

      Attachments

        Issue Links

          Activity

            People

              mlassau Mark Lassau (Inactive)
              bdziedzic Bogdan Dziedzic [Atlassian]
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: