getTermSet() 공개 메소드

public getTermSet ( String field ) : List
field String
리턴 List
예제 #1
0
        public void TestGetTermSet()
        {
            Query      query = paW.Parse("A AND B OR x:C NOT (D AND E)");
            FieldQuery fq    = new FieldQuery(query, true, true);

            Assert.AreEqual(2, fq.termSetMap.Count);
            List <String> termSet = fq.getTermSet(F);

            Assert.AreEqual(2, termSet.Count);
            Assert.IsTrue(termSet.Contains("A"));
            Assert.IsTrue(termSet.Contains("B"));
            termSet = fq.getTermSet("x");
            Assert.AreEqual(1, termSet.Count);
            Assert.IsTrue(termSet.Contains("C"));
            termSet = fq.getTermSet("y");
            Assert.Null(termSet);
        }
예제 #2
0
        public FieldTermStack(IndexReader reader, int docId, String fieldName, FieldQuery fieldQuery)
        {
            this.fieldName = fieldName;

            TermFreqVector tfv = reader.GetTermFreqVector(docId, fieldName);

            if (tfv == null)
            {
                return;              // just return to make null snippets
            }
            TermPositionVector tpv = null;

            try
            {
                tpv = (TermPositionVector)tfv;
            }
            catch (InvalidCastException e)
            {
                return; // just return to make null snippets
            }

            List <String> termSet = fieldQuery.getTermSet(fieldName);

            // just return to make null snippet if un-matched fieldName specified when fieldMatch == true
            if (termSet == null)
            {
                return;
            }

            foreach (String term in tpv.GetTerms())
            {
                if (!termSet.Contains(term))
                {
                    continue;
                }
                int index = tpv.IndexOf(term);
                TermVectorOffsetInfo[] tvois = tpv.GetOffsets(index);
                if (tvois == null)
                {
                    return;                // just return to make null snippets
                }
                int[] poss = tpv.GetTermPositions(index);
                if (poss == null)
                {
                    return;               // just return to make null snippets
                }
                for (int i = 0; i < tvois.Length; i++)
                {
                    termList.AddLast(new TermInfo(term, tvois[i].GetStartOffset(), tvois[i].GetEndOffset(), poss[i]));
                }
            }

            // sort by position
            //Collections.sort(termList);
            Sort(termList);
        }
예제 #3
0
        /// <summary>
        /// a constructor.
        /// </summary>
        /// <param name="reader">IndexReader of the index</param>
        /// <param name="docId">document id to be highlighted</param>
        /// <param name="fieldName">field of the document to be highlighted</param>
        /// <param name="fieldQuery">FieldQuery object</param>
#if LUCENENET_350 //Lucene.Net specific code. See https://issues.apache.org/jira/browse/LUCENENET-350
        public FieldTermStack(IndexReader reader, int docId, String fieldName, FieldQuery fieldQuery, IState state)
        {
            this.fieldName = fieldName;

            List <string> termSet = fieldQuery.getTermSet(fieldName);

            // just return to make null snippet if un-matched fieldName specified when fieldMatch == true
            if (termSet == null)
            {
                return;
            }

            //TermFreqVector tfv = reader.GetTermFreqVector(docId, fieldName);
            VectorHighlightMapper tfv = new VectorHighlightMapper(termSet);

            reader.GetTermFreqVector(docId, fieldName, tfv, state);

            if (tfv.Size == 0)
            {
                return;                // just return to make null snippets
            }
            string[] terms = tfv.GetTerms();
            foreach (String term in terms)
            {
                if (!StringUtils.AnyTermMatch(termSet, term))
                {
                    continue;
                }
                int index = tfv.IndexOf(term);
                TermVectorOffsetInfo[] tvois = tfv.GetOffsets(index);
                if (tvois == null)
                {
                    return;                // just return to make null snippets
                }
                int[] poss = tfv.GetTermPositions(index);
                if (poss == null)
                {
                    return;               // just return to make null snippets
                }
                for (int i = 0; i < tvois.Length; i++)
                {
                    termList.AddLast(new TermInfo(term, tvois[i].StartOffset, tvois[i].EndOffset, poss[i]));
                }
            }
            // sort by position
            //Collections.sort(termList);
            Sort(termList);
        }
예제 #4
0
 public void TestGetTermSet()
 {
     Query query = paW.Parse("A AND B OR x:C NOT (D AND E)");
     FieldQuery fq = new FieldQuery(query, true, true);
     Assert.AreEqual(2, fq.termSetMap.Count);
     List<String> termSet = fq.getTermSet(F);
     Assert.AreEqual(2, termSet.Count);
     Assert.IsTrue(termSet.Contains("A"));
     Assert.IsTrue(termSet.Contains("B"));
     termSet = fq.getTermSet("x");
     Assert.AreEqual(1, termSet.Count);
     Assert.IsTrue(termSet.Contains("C"));
     termSet = fq.getTermSet("y");
     Assert.Null(termSet);
 }
예제 #5
0
        public FieldTermStack(IndexReader reader, int docId, String fieldName, FieldQuery fieldQuery, IState state)
        {
            this.fieldName = fieldName;

            var tfv = reader.GetTermFreqVector(docId, fieldName, state);

            if (tfv == null)
            {
                return; // just return to make null snippets
            }
            TermPositionVector tpv = null;

            try
            {
                tpv = (TermPositionVector)tfv;
            }
            catch (InvalidCastException)
            {
                return; // just return to make null snippets
            }

            List <String> termSet = fieldQuery.getTermSet(fieldName);

            // just return to make null snippet if un-matched fieldName specified when fieldMatch == true
            if (termSet == null)
            {
                return;
            }
            var needwildcard = termSet.Any(x => x.IndexOfAny(new char[] { '*', '?' }) != -1);

            foreach (String term in tpv.GetTerms())
            {
                if (needwildcard)
                {
                    if (termSet.Any(ts => WildcardMatcher.Matches(ts, term)) == false)
                    {
                        continue;
                    }
                }
                else if (!termSet.Contains(term))
                {
                    continue;
                }

                int index = tpv.IndexOf(term);
                TermVectorOffsetInfo[] tvois = tpv.GetOffsets(index);
                if (tvois == null)
                {
                    return; // just return to make null snippets
                }
                int[] poss = tpv.GetTermPositions(index);
                if (poss == null)
                {
                    return; // just return to make null snippets
                }
                for (int i = 0; i < tvois.Length; i++)
                {
                    termList.AddLast(new TermInfo(term, tvois[i].StartOffset, tvois[i].EndOffset, poss[i]));
                }
            }

            // sort by position
            //Collections.sort(termList);
            Sort(termList);
        }