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); }
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); }
/// <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); }
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); }
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); }