Esempio n. 1
0
        public static void BeforeClass()
        {
            IEnumerable <Type> analysisClasses = typeof(StandardAnalyzer).Assembly.GetTypes()
                                                 .Where(c => !c.IsAbstract && c.IsPublic && !c.IsInterface && c.IsClass && (c.GetCustomAttribute <ObsoleteAttribute>() == null) &&
                                                        (c.IsSubclassOf(typeof(Tokenizer)) || c.IsSubclassOf(typeof(TokenFilter)) || c.IsSubclassOf(typeof(CharFilter)))).ToArray();

            tokenizers   = new List <ConstructorInfo>();
            tokenfilters = new List <ConstructorInfo>();
            charfilters  = new List <ConstructorInfo>();
            foreach (Type c in analysisClasses)
            {
                foreach (ConstructorInfo ctor in c.GetConstructors())
                {
                    if (ctor.GetCustomAttribute <ObsoleteAttribute>() != null || (brokenConstructors.ContainsKey(ctor) && brokenConstructors[ctor] == ALWAYS))
                    {
                        continue;
                    }

                    if (c.IsSubclassOf(typeof(Tokenizer)))
                    {
                        assertTrue(ctor.ToString() + " has unsupported parameter types",
                                   allowedTokenizerArgs.containsAll(Arrays.AsList(ctor.GetParameters().Select(p => p.ParameterType).ToArray())));
                        tokenizers.Add(ctor);
                    }
                    else if (c.IsSubclassOf(typeof(TokenFilter)))
                    {
                        assertTrue(ctor.ToString() + " has unsupported parameter types",
                                   allowedTokenFilterArgs.containsAll(Arrays.AsList(ctor.GetParameters().Select(p => p.ParameterType).ToArray())));
                        tokenfilters.Add(ctor);
                    }
                    else if (c.IsSubclassOf(typeof(CharFilter)))
                    {
                        assertTrue(ctor.ToString() + " has unsupported parameter types",
                                   allowedCharFilterArgs.containsAll(Arrays.AsList(ctor.GetParameters().Select(p => p.ParameterType).ToArray())));
                        charfilters.Add(ctor);
                    }
                    else
                    {
                        fail("Cannot get here");
                    }
                }
            }

            IComparer <ConstructorInfo> ctorComp = new ComparatorAnonymousInnerClassHelper();

            tokenizers.Sort(ctorComp);
            tokenfilters.Sort(ctorComp);
            charfilters.Sort(ctorComp);
            if (VERBOSE)
            {
                Console.WriteLine("tokenizers = " + tokenizers);
                Console.WriteLine("tokenfilters = " + tokenfilters);
                Console.WriteLine("charfilters = " + charfilters);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// sort each repetition group by (query) offset.
        /// Done only once (at first doc) and allows to initialize faster for each doc.
        /// </summary>
        private void SortRptGroups(List <List <PhrasePositions> > rgs)
        {
            RptGroups = new PhrasePositions[rgs.Count][];
            IComparer <PhrasePositions> cmprtr = new ComparatorAnonymousInnerClassHelper(this);

            for (int i = 0; i < RptGroups.Length; i++)
            {
                PhrasePositions[] rg = rgs[i].ToArray();
                Array.Sort(rg, cmprtr);
                RptGroups[i] = rg;
                for (int j = 0; j < rg.Length; j++)
                {
                    rg[j].RptInd = j; // we use this index for efficient re-queuing
                }
            }
        }