public void Test1TermB() { makeIndexB(); FieldQuery fq = new FieldQuery(tq("ab"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); assertEquals(2, stack.termList.size()); assertEquals("ab(2,4,2)", stack.Pop().toString()); assertEquals("ab(6,8,6)", stack.Pop().toString()); }
public void TestFieldTermStackIndex1w2wSearch1phrase() { makeIndex1w2w(); FieldQuery fq = new FieldQuery(pqF("personal", "computer"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); assertEquals(2, stack.termList.size()); assertEquals("personal(3,5,1)", stack.Pop().toString()); assertEquals("computer(3,5,2)", stack.Pop().toString()); }
public void TestWildcard() { makeIndexLongMV(); FieldQuery fq = new FieldQuery(new WildcardQuery(new Term(F, "th*e")), reader, true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); assertEquals(4, stack.termList.size()); assertEquals("the(15,18,2)", stack.Pop().toString()); assertEquals("these(133,138,20)", stack.Pop().toString()); assertEquals("the(153,156,23)", stack.Pop().toString()); assertEquals("the(195,198,31)", stack.Pop().toString()); }
public void Test1Phrase() { makeIndex(); FieldQuery fq = new FieldQuery(pqF("c", "d"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); assertEquals(3, stack.termList.size()); assertEquals("c(10,11,5)", stack.Pop().toString()); assertEquals("c(18,19,9)", stack.Pop().toString()); assertEquals("d(20,21,10)", stack.Pop().toString()); }
public void Test1PhraseMVB() { makeIndexLongMVB(); FieldQuery fq = new FieldQuery(pqF("sp", "pe", "ee", "ed"), true, true); // "speed" -(2gram)-> "sp","pe","ee","ed" FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); assertEquals(4, stack.termList.size()); assertEquals("sp(88,90,61)", stack.Pop().toString()); assertEquals("pe(89,91,62)", stack.Pop().toString()); assertEquals("ee(90,92,63)", stack.Pop().toString()); assertEquals("ed(91,93,64)", stack.Pop().toString()); }
public void Test1PhraseLongMV() { makeIndexLongMV(); FieldQuery fq = new FieldQuery(pqF("search", "engines"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); assertEquals(4, stack.termList.size()); assertEquals("search(102,108,14)", stack.Pop().toString()); assertEquals("engines(109,116,15)", stack.Pop().toString()); assertEquals("search(157,163,24)", stack.Pop().toString()); assertEquals("engines(164,171,25)", stack.Pop().toString()); }
public void Test1PhraseB() { makeIndexB(); FieldQuery fq = new FieldQuery(pqF("ab", "bb"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); assertEquals(4, stack.termList.size()); assertEquals("ab(2,4,2)", stack.Pop().toString()); assertEquals("bb(3,5,3)", stack.Pop().toString()); assertEquals("ab(6,8,6)", stack.Pop().toString()); assertEquals("bb(7,9,7)", stack.Pop().toString()); }
public void Test2TermsB() { makeIndexB(); BooleanQuery query = new BooleanQuery(); query.Add(tq("bc"), Occur.SHOULD); query.Add(tq("ef"), Occur.SHOULD); FieldQuery fq = new FieldQuery(query, true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); assertEquals(3, stack.termList.size()); assertEquals("bc(4,6,4)", stack.Pop().toString()); assertEquals("bc(8,10,8)", stack.Pop().toString()); assertEquals("ef(11,13,11)", stack.Pop().toString()); }
public void TestFieldTermStackIndex1w2wSearch1term1phrase() { makeIndex1w2w(); BooleanQuery bq = new BooleanQuery(); bq.Add(tq("pc"), Occur.SHOULD); bq.Add(pqF("personal", "computer"), Occur.SHOULD); FieldQuery fq = new FieldQuery(bq, true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); assertEquals(2, stack.termList.size()); TermInfo ti = stack.Pop(); assertEquals("pc(3,5,1)", ti.toString()); assertEquals("personal(3,5,1)", ti.Next.toString()); assertSame(ti, ti.Next.Next); assertEquals("computer(3,5,2)", stack.Pop().toString()); }
public void TestFieldTermStackIndex1w2wSearch1partial() { makeIndex1w2w(); FieldQuery fq = new FieldQuery(tq("computer"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); assertEquals(1, stack.termList.size()); assertEquals("computer(3,5,2)", stack.Pop().toString()); }
public void TestFieldTermStackIndex1wSearch1term() { makeIndex1w(); FieldQuery fq = new FieldQuery(tq("Mac"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); assertEquals(1, stack.termList.size()); assertEquals("Mac(11,20,3)", stack.Pop().toString()); }
public void Test1PhraseShortMV() { makeIndexShortMV(); FieldQuery fq = new FieldQuery(tq("d"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); assertEquals(1, stack.termList.size()); assertEquals("d(9,10,3)", stack.Pop().toString()); }
public void TestFieldTermStackIndex1wSearch2terms() { makeIndex1w(); BooleanQuery bq = new BooleanQuery(); bq.Add(tq("Mac"), Occur.SHOULD); bq.Add(tq("MacBook"), Occur.SHOULD); FieldQuery fq = new FieldQuery(bq, true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); assertEquals(1, stack.termList.size()); TermInfo ti = stack.Pop(); assertEquals("Mac(11,20,3)", ti.toString()); assertEquals("MacBook(11,20,3)", ti.Next.toString()); assertSame(ti, ti.Next.Next); }
public void Test2Terms() { makeIndex(); BooleanQuery query = new BooleanQuery(); query.Add(tq("b"), Occur.SHOULD); query.Add(tq("c"), Occur.SHOULD); FieldQuery fq = new FieldQuery(query, true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); assertEquals(8, stack.termList.size()); assertEquals("b(6,7,3)", stack.Pop().toString()); assertEquals("b(8,9,4)", stack.Pop().toString()); assertEquals("c(10,11,5)", stack.Pop().toString()); assertEquals("b(14,15,7)", stack.Pop().toString()); assertEquals("b(16,17,8)", stack.Pop().toString()); assertEquals("c(18,19,9)", stack.Pop().toString()); assertEquals("b(26,27,13)", stack.Pop().toString()); assertEquals("b(30,31,15)", stack.Pop().toString()); }
public void Test1Term() { makeIndex(); FieldQuery fq = new FieldQuery(tq("a"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); assertEquals(6, stack.termList.size()); assertEquals("a(0,1,0)", stack.Pop().toString()); assertEquals("a(2,3,1)", stack.Pop().toString()); assertEquals("a(4,5,2)", stack.Pop().toString()); assertEquals("a(12,13,6)", stack.Pop().toString()); assertEquals("a(28,29,14)", stack.Pop().toString()); assertEquals("a(32,33,16)", stack.Pop().toString()); }
/// <summary> /// a constructor. /// </summary> /// <param name="fieldTermStack"><see cref="FieldTermStack"/> object</param> /// <param name="fieldQuery"><see cref="FieldQuery"/> object</param> /// <param name="phraseLimit">maximum size of phraseList</param> public FieldPhraseList(FieldTermStack fieldTermStack, FieldQuery fieldQuery, int phraseLimit) { string field = fieldTermStack.FieldName; List <TermInfo> phraseCandidate = new List <TermInfo>(); QueryPhraseMap currMap = null; QueryPhraseMap nextMap = null; while (!fieldTermStack.IsEmpty && (phraseList.Count < phraseLimit)) { phraseCandidate.Clear(); TermInfo ti = null; TermInfo first = null; first = ti = fieldTermStack.Pop(); currMap = fieldQuery.GetFieldTermMap(field, ti.Text); while (currMap == null && ti.Next != first) { ti = ti.Next; currMap = fieldQuery.GetFieldTermMap(field, ti.Text); } // if not found, discard top TermInfo from stack, then try next element if (currMap == null) { continue; } // if found, search the longest phrase phraseCandidate.Add(ti); while (true) { first = ti = fieldTermStack.Pop(); nextMap = null; if (ti != null) { nextMap = currMap.GetTermMap(ti.Text); while (nextMap == null && ti.Next != first) { ti = ti.Next; nextMap = currMap.GetTermMap(ti.Text); } } if (ti == null || nextMap == null) { if (ti != null) { fieldTermStack.Push(ti); } if (currMap.IsValidTermOrPhrase(phraseCandidate)) { AddIfNoOverlap(new WeightedPhraseInfo(phraseCandidate, currMap.Boost, currMap.TermOrPhraseNumber)); } else { while (phraseCandidate.Count > 1) { //fieldTermStack.Push(phraseCandidate.Last.Value); //phraseCandidate.RemoveLast(); TermInfo last = phraseCandidate[phraseCandidate.Count - 1]; phraseCandidate.Remove(last); fieldTermStack.Push(last); currMap = fieldQuery.SearchPhrase(field, phraseCandidate); if (currMap != null) { AddIfNoOverlap(new WeightedPhraseInfo(phraseCandidate, currMap.Boost, currMap.TermOrPhraseNumber)); break; } } } break; } else { phraseCandidate.Add(ti); currMap = nextMap; } } } }