Ejemplo n.º 1
0
        /// <summary>
        /// Build a <see cref="FieldFragList"/> for one field.
        /// </summary>
        private FieldFragList GetFieldFragList(IFragListBuilder fragListBuilder,
                                               FieldQuery fieldQuery, IndexReader reader, int docId,
                                               string matchedField, int fragCharSize)
        {
            FieldTermStack  fieldTermStack  = new FieldTermStack(reader, docId, matchedField, fieldQuery);
            FieldPhraseList fieldPhraseList = new FieldPhraseList(fieldTermStack, fieldQuery, phraseLimit);

            return(fragListBuilder.CreateFieldFragList(fieldPhraseList, fragCharSize));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Build a <see cref="FieldFragList"/> for more than one field.
        /// </summary>
        private FieldFragList GetFieldFragList(IFragListBuilder fragListBuilder,
                                               FieldQuery fieldQuery, IndexReader reader, int docId,
                                               ISet <string> matchedFields, int fragCharSize)
        {
            if (matchedFields.Count == 0)
            {
                throw new ArgumentException("matchedFields must contain at least on field name.");
            }
            FieldPhraseList[]
                toMerge = new FieldPhraseList[matchedFields.Count];
            int i       = 0;

            foreach (var matchedField in matchedFields)
            {
                FieldTermStack stack = new FieldTermStack(reader, docId, matchedField, fieldQuery);
                toMerge[i++] = new FieldPhraseList(stack, fieldQuery, phraseLimit);
            }
            return(fragListBuilder.CreateFieldFragList(new FieldPhraseList(toMerge), fragCharSize));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Build a <see cref="FieldFragList"/> for more than one field.
        /// </summary>
        private FieldFragList GetFieldFragList(IFragListBuilder fragListBuilder,
                                               FieldQuery fieldQuery, IndexReader reader, int docId,
                                               ISet <string> matchedFields, int fragCharSize)
        {
            IEnumerator <string> matchedFieldsItr = matchedFields.GetEnumerator();

            if (!matchedFields.Any())
            {
                throw new ArgumentException("matchedFields must contain at least on field name.");
            }
            FieldPhraseList[]
                toMerge = new FieldPhraseList[matchedFields.Count];
            int i       = 0;

            while (matchedFieldsItr.MoveNext())
            {
                FieldTermStack stack = new FieldTermStack(reader, docId, matchedFieldsItr.Current, fieldQuery);
                toMerge[i++] = new FieldPhraseList(stack, fieldQuery, phraseLimit);
            }
            return(fragListBuilder.CreateFieldFragList(new FieldPhraseList(toMerge), fragCharSize));
        }