public virtual FieldFragList CreateFieldFragList(FieldPhraseList fieldPhraseList, int fragCharSize) { FieldFragList ffl = new SimpleFieldFragList(fragCharSize); List <WeightedPhraseInfo> wpil = new List <WeightedPhraseInfo>(); using (IEnumerator <WeightedPhraseInfo> ite = fieldPhraseList.PhraseList.GetEnumerator()) { WeightedPhraseInfo phraseInfo = null; while (true) { if (!ite.MoveNext()) { break; } phraseInfo = ite.Current; if (phraseInfo == null) { break; } wpil.Add(phraseInfo); } if (wpil.Count > 0) { ffl.Add(0, int.MaxValue, wpil); } return(ffl); } }
public void TestDiscreteMultiValueHighlighting() { makeIndexShortMV(); FieldQuery fq = new FieldQuery(tq("d"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); SimpleFragListBuilder sflb = new SimpleFragListBuilder(); FieldFragList ffl = sflb.CreateFieldFragList(fpl, 100); SimpleFragmentsBuilder sfb = new SimpleFragmentsBuilder(); sfb.IsDiscreteMultiValueHighlighting = (true); assertEquals("<b>d</b> e", sfb.CreateFragment(reader, 0, F, ffl)); make1dmfIndex("some text to highlight", "highlight other text"); fq = new FieldQuery(tq("text"), true, true); stack = new FieldTermStack(reader, 0, F, fq); fpl = new FieldPhraseList(stack, fq); sflb = new SimpleFragListBuilder(); ffl = sflb.CreateFieldFragList(fpl, 32); String[] result = sfb.CreateFragments(reader, 0, F, ffl, 3); assertEquals(2, result.Length); assertEquals("some <b>text</b> to highlight", result[0]); assertEquals("highlight other <b>text</b>", result[1]); fq = new FieldQuery(tq("highlight"), true, true); stack = new FieldTermStack(reader, 0, F, fq); fpl = new FieldPhraseList(stack, fq); sflb = new SimpleFragListBuilder(); ffl = sflb.CreateFieldFragList(fpl, 32); result = sfb.CreateFragments(reader, 0, F, ffl, 3); assertEquals(2, result.Length); assertEquals("text to <b>highlight</b>", result[0]); assertEquals("<b>highlight</b> other text", result[1]); }
private void TestCase(Query query, int fragCharSize, String expectedFragInfo, double expectedTotalSubInfoBoost) { makeIndexLongMV(); FieldQuery fq = new FieldQuery(query, true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); WeightedFragListBuilder wflb = new WeightedFragListBuilder(); FieldFragList ffl = wflb.CreateFieldFragList(fpl, fragCharSize); assertEquals(1, ffl.FragInfos.size()); assertEquals(expectedFragInfo, ffl.FragInfos[0].toString()); float totalSubInfoBoost = 0; foreach (WeightedFragInfo info in ffl.FragInfos) { foreach (SubInfo subInfo in info.SubInfos) { totalSubInfoBoost += subInfo.Boost; } } assertEquals(expectedTotalSubInfoBoost, totalSubInfoBoost, .0000001); }
private FieldFragList Ffl(Query query, String indexValue) { make1d1fIndex(indexValue); FieldQuery fq = new FieldQuery(query, true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); return(new SimpleFragListBuilder().CreateFieldFragList(fpl, 20)); }
/// <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)); }
public void Test1PhraseShortMV() { makeIndexShortMV(); FieldQuery fq = new FieldQuery(tq("d"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); assertEquals(1, fpl.PhraseList.size()); assertEquals("d(1.0)((9,10))", fpl.PhraseList[0].ToString(CultureInfo.InvariantCulture)); // LUCENENET specific: use invariant culture, since we are culture-aware }
public void Test3TermsPhrase() { make1d1fIndex("d a b a b c d"); FieldQuery fq = new FieldQuery(pqF("a", "b", "c"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); assertEquals(1, fpl.PhraseList.size()); assertEquals("abc(1.0)((6,11))", fpl.PhraseList[0].ToString(CultureInfo.InvariantCulture)); // LUCENENET specific: use invariant culture, since we are culture-aware }
public void Test3TermsPhrase() { make1d1fIndex("d a b a b c d"); FieldQuery fq = new FieldQuery(pqF("a", "b", "c"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); assertEquals(1, fpl.PhraseList.size()); assertEquals("abc(1.0)((6,11))", fpl.PhraseList[0].toString()); }
public void Test1PhraseShortMV() { makeIndexShortMV(); FieldQuery fq = new FieldQuery(tq("d"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); assertEquals(1, fpl.PhraseList.size()); assertEquals("d(1.0)((9,10))", fpl.PhraseList[0].toString()); }
public void Test1PhraseLongMVB() { 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); FieldPhraseList fpl = new FieldPhraseList(stack, fq); assertEquals(1, fpl.PhraseList.size()); assertEquals("sppeeeed(1.0)((88,93))", fpl.PhraseList[0].toString()); }
public void Test1PhraseLongMVB() { 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); FieldPhraseList fpl = new FieldPhraseList(stack, fq); assertEquals(1, fpl.PhraseList.size()); assertEquals("sppeeeed(1.0)((88,93))", fpl.PhraseList[0].ToString(CultureInfo.InvariantCulture)); // LUCENENET specific: use invariant culture, since we are culture-aware }
public void Test1PhraseLongMV() { makeIndexLongMV(); FieldQuery fq = new FieldQuery(pqF("search", "engines"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); assertEquals(2, fpl.PhraseList.size()); assertEquals("searchengines(1.0)((102,116))", fpl.PhraseList[0].ToString(CultureInfo.InvariantCulture)); // LUCENENET specific: use invariant culture, since we are culture-aware assertEquals("searchengines(1.0)((157,171))", fpl.PhraseList[1].ToString(CultureInfo.InvariantCulture)); // LUCENENET specific: use invariant culture, since we are culture-aware }
public void Test2TermsIndex() { make1d1fIndex("a a"); FieldQuery fq = new FieldQuery(tq("a"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); assertEquals(2, fpl.PhraseList.size()); assertEquals("a(1.0)((0,1))", fpl.PhraseList[0].ToString(CultureInfo.InvariantCulture)); // LUCENENET specific: use invariant culture, since we are culture-aware assertEquals("a(1.0)((2,3))", fpl.PhraseList[1].ToString(CultureInfo.InvariantCulture)); // LUCENENET specific: use invariant culture, since we are culture-aware }
public void Test2TermsIndex() { make1d1fIndex("a a"); FieldQuery fq = new FieldQuery(tq("a"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); assertEquals(2, fpl.PhraseList.size()); assertEquals("a(1.0)((0,1))", fpl.PhraseList[0].toString()); assertEquals("a(1.0)((2,3))", fpl.PhraseList[1].toString()); }
public void Test1PhraseLongMV() { makeIndexLongMV(); FieldQuery fq = new FieldQuery(pqF("search", "engines"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); assertEquals(2, fpl.PhraseList.size()); assertEquals("searchengines(1.0)((102,116))", fpl.PhraseList[0].toString()); assertEquals("searchengines(1.0)((157,171))", fpl.PhraseList[1].toString()); }
public void TestUnstoredField() { makeUnstoredIndex(); FieldQuery fq = new FieldQuery(tq("aaa"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); SimpleFragListBuilder sflb = new SimpleFragListBuilder(); FieldFragList ffl = sflb.CreateFieldFragList(fpl, 100); SimpleFragmentsBuilder sfb = new SimpleFragmentsBuilder(); assertNull(sfb.CreateFragment(reader, 0, F, ffl)); }
public void Test1PhraseLongMVB() { 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); FieldPhraseList fpl = new FieldPhraseList(stack, fq); SimpleFragListBuilder sflb = new SimpleFragListBuilder(); FieldFragList ffl = sflb.CreateFieldFragList(fpl, 100); SimpleFragmentsBuilder sfb = new SimpleFragmentsBuilder(); assertEquals("additional hardware. \nWhen you talk about processing <b>speed</b>, the", sfb.CreateFragment(reader, 0, F, ffl)); }
public void Test1PhraseLongMVB() { 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); FieldPhraseList fpl = new FieldPhraseList(stack, fq); SimpleFragListBuilder sflb = new SimpleFragListBuilder(); FieldFragList ffl = sflb.CreateFieldFragList(fpl, 100); assertEquals(1, ffl.FragInfos.size()); assertEquals("subInfos=(sppeeeed((88,93)))/1.0(41,141)", ffl.FragInfos[0].ToString(CultureInfo.InvariantCulture)); // LUCENENET specific: use invariant culture, since we are culture-aware }
public void TestFieldPhraseListIndex1w2wSearch1phrase() { makeIndex1w2w(); FieldQuery fq = new FieldQuery(pqF("personal", "computer"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); assertEquals(1, fpl.PhraseList.size()); assertEquals("personalcomputer(1.0)((3,5))", fpl.PhraseList[0].toString()); assertEquals(3, fpl.PhraseList[0].StartOffset); assertEquals(5, fpl.PhraseList[0].EndOffset); }
public void TestFieldPhraseListIndex2w1wSearch1partial() { makeIndex2w1w(); FieldQuery fq = new FieldQuery(tq("computer"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); assertEquals(1, fpl.PhraseList.size()); assertEquals("computer(1.0)((3,20))", fpl.PhraseList[0].ToString(CultureInfo.InvariantCulture)); // LUCENENET specific: use invariant culture, since we are culture-aware assertEquals(3, fpl.PhraseList[0].StartOffset); assertEquals(20, fpl.PhraseList[0].EndOffset); }
public void TestFieldPhraseListIndex2w1wSearch1partial() { makeIndex2w1w(); FieldQuery fq = new FieldQuery(tq("computer"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); assertEquals(1, fpl.PhraseList.size()); assertEquals("computer(1.0)((3,20))", fpl.PhraseList[0].toString()); assertEquals(3, fpl.PhraseList[0].StartOffset); assertEquals(20, fpl.PhraseList[0].EndOffset); }
public void TestPhraseSlop() { make1d1fIndex("c a a b c"); FieldQuery fq = new FieldQuery(pqF(2F, 1, "a", "c"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); assertEquals(1, fpl.PhraseList.size()); assertEquals("ac(2.0)((4,5)(8,9))", fpl.PhraseList[0].toString()); assertEquals(4, fpl.PhraseList[0].StartOffset); assertEquals(9, fpl.PhraseList[0].EndOffset); }
public void Test1PhraseLongMVB() { 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); FieldPhraseList fpl = new FieldPhraseList(stack, fq); SimpleFragListBuilder sflb = new SimpleFragListBuilder(); FieldFragList ffl = sflb.CreateFieldFragList(fpl, 100); assertEquals(1, ffl.FragInfos.size()); assertEquals("subInfos=(sppeeeed((88,93)))/1.0(41,141)", ffl.FragInfos[0].toString()); }
public void Test1PhraseLongMV() { makeIndexLongMV(); FieldQuery fq = new FieldQuery(pqF("search", "engines"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); SimpleFragListBuilder sflb = new SimpleFragListBuilder(); FieldFragList ffl = sflb.CreateFieldFragList(fpl, 100); assertEquals(1, ffl.FragInfos.size()); assertEquals("subInfos=(searchengines((102,116))searchengines((157,171)))/2.0(87,187)", ffl.FragInfos[0].ToString(CultureInfo.InvariantCulture)); // LUCENENET specific: use invariant culture, since we are culture-aware }
public void Test1PhraseShortMV() { makeIndexShortMV(); FieldQuery fq = new FieldQuery(tq("d"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); SimpleFragListBuilder sflb = new SimpleFragListBuilder(); FieldFragList ffl = sflb.CreateFieldFragList(fpl, 100); assertEquals(1, ffl.FragInfos.size()); assertEquals("subInfos=(d((9,10)))/1.0(0,100)", ffl.FragInfos[0].toString()); }
public void TestPhraseSlop() { make1d1fIndex("c a a b c"); FieldQuery fq = new FieldQuery(pqF(2F, 1, "a", "c"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); assertEquals(1, fpl.PhraseList.size()); assertEquals("ac(2.0)((4,5)(8,9))", fpl.PhraseList[0].ToString(CultureInfo.InvariantCulture)); // LUCENENET specific: use invariant culture, since we are culture-aware assertEquals(4, fpl.PhraseList[0].StartOffset); assertEquals(9, fpl.PhraseList[0].EndOffset); }
public void Test1PhraseLongMV() { makeIndexLongMV(); FieldQuery fq = new FieldQuery(pqF("search", "engines"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); SimpleFragListBuilder sflb = new SimpleFragListBuilder(); FieldFragList ffl = sflb.CreateFieldFragList(fpl, 100); assertEquals(1, ffl.FragInfos.size()); assertEquals("subInfos=(searchengines((102,116))searchengines((157,171)))/2.0(87,187)", ffl.FragInfos[0].toString()); }
public void Test1PhraseShortMV() { makeIndexShortMV(); FieldQuery fq = new FieldQuery(tq("d"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); SimpleFragListBuilder sflb = new SimpleFragListBuilder(); FieldFragList ffl = sflb.CreateFieldFragList(fpl, 100); assertEquals(1, ffl.FragInfos.size()); assertEquals("subInfos=(d((9,10)))/1.0(0,100)", ffl.FragInfos[0].ToString(CultureInfo.InvariantCulture)); // LUCENENET specific: use invariant culture, since we are culture-aware }
public void Test1PhraseLongMV() { makeIndexLongMV(); FieldQuery fq = new FieldQuery(pqF("search", "engines"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); SimpleFragListBuilder sflb = new SimpleFragListBuilder(); FieldFragList ffl = sflb.CreateFieldFragList(fpl, 100); SimpleFragmentsBuilder sfb = new SimpleFragmentsBuilder(); assertEquals("customization: The most <b>search engines</b> use only one of these methods. Even the <b>search engines</b> that says they can", sfb.CreateFragment(reader, 0, F, ffl)); }
public void TestMVSeparator() { makeIndexShortMV(); FieldQuery fq = new FieldQuery(tq("d"), true, true); FieldTermStack stack = new FieldTermStack(reader, 0, F, fq); FieldPhraseList fpl = new FieldPhraseList(stack, fq); SimpleFragListBuilder sflb = new SimpleFragListBuilder(); FieldFragList ffl = sflb.CreateFieldFragList(fpl, 100); SimpleFragmentsBuilder sfb = new SimpleFragmentsBuilder(); sfb.MultiValuedSeparator = ('/'); assertEquals("//a b c//<b>d</b> e", sfb.CreateFragment(reader, 0, F, ffl)); }