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);
            }
        }
Exemple #2
0
        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);
        }
Exemple #4
0
        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));
        }
Exemple #5
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));
        }
        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
        }
Exemple #8
0
        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());
        }
Exemple #9
0
        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());
        }
Exemple #10
0
        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
        }
Exemple #14
0
        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());
        }
Exemple #15
0
        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());
        }
Exemple #16
0
        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));
        }
Exemple #17
0
        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));
        }
Exemple #18
0
        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
        }
Exemple #19
0
        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);
        }
Exemple #20
0
        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);
        }
Exemple #21
0
        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);
        }
Exemple #22
0
        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());
        }
Exemple #24
0
        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());
        }
Exemple #28
0
        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
        }
Exemple #29
0
        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));
        }
Exemple #30
0
        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));
        }