blob: a666ef14fed25230c9d11ef171e1b91391c2d71b [file] [log] [blame]
using NUnit.Framework;
using System;
using SubInfo = Lucene.Net.Search.VectorHighlight.FieldFragList.WeightedFragInfo.SubInfo;
using WeightedFragInfo = Lucene.Net.Search.VectorHighlight.FieldFragList.WeightedFragInfo;
namespace Lucene.Net.Search.VectorHighlight
{
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
public class WeightedFragListBuilderTest : AbstractTestCase
{
[Test]
public void Test2WeightedFragList()
{
TestCase(pqF("the", "both"), 100,
"subInfos=(theboth((195,203)))/0.8679108(149,249)",
0.8679108);
}
[Test]
public void Test2SubInfos()
{
BooleanQuery query = new BooleanQuery();
query.Add(pqF("the", "both"), Occur.MUST);
query.Add(tq("examples"), Occur.MUST);
TestCase(query, 1000,
"subInfos=(examples((19,27))examples((66,74))theboth((195,203)))/1.8411169(0,1000)",
1.8411169);
}
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);
}
}
}