public void TestQueryPhraseMap1PhraseAnother() { // LUCENENET specific - altered some of the tests because // dictionaries throw KeyNotFoundException rather than returning null. Query query = pqF("search", "engines"); // phraseHighlight = true, fieldMatch = true FieldQuery fq = new FieldQuery(query, true, true); IDictionary <String, QueryPhraseMap> map = fq.rootMaps; assertEquals(1, map.size()); assertFalse(map.TryGetValue(null, out _)); // assertNull(map[null]); assertNotNull(map[F]); QueryPhraseMap qpm = map[F]; assertEquals(1, qpm.subMap.size()); assertNotNull(qpm.subMap["search"]); QueryPhraseMap qpm2 = qpm.subMap["search"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["engines"]); QueryPhraseMap qpm3 = qpm2.subMap["engines"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); }
public void TestQueryPhraseMap1PhraseAnother() { Query query = pqF("search", "engines"); // phraseHighlight = true, fieldMatch = true FieldQuery fq = new FieldQuery(query, true, true); IDictionary <String, QueryPhraseMap> map = fq.rootMaps; assertEquals(1, map.size()); assertNull(map[null]); assertNotNull(map[F]); QueryPhraseMap qpm = map[F]; assertEquals(1, qpm.subMap.size()); assertNotNull(qpm.subMap["search"]); QueryPhraseMap qpm2 = qpm.subMap["search"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["engines"]); QueryPhraseMap qpm3 = qpm2.subMap["engines"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); }
public void TestQueryPhraseMapOverlapPhrases() { BooleanQuery query = new BooleanQuery(); query.Add(pqF("a", "b", "c"), Occur.SHOULD); query.Add(pqF(2, "b", "c", "d"), Occur.SHOULD); query.Add(pqF(3, "b", "d"), Occur.SHOULD); // phraseHighlight = true, fieldMatch = true FieldQuery fq = new FieldQuery(query, true, true); IDictionary <String, QueryPhraseMap> map = fq.rootMaps; assertEquals(1, map.size()); assertNull(map[null]); assertNotNull(map[F]); QueryPhraseMap qpm = map[F]; assertEquals(2, qpm.subMap.size()); // "a b c" assertNotNull(qpm.subMap["a"]); QueryPhraseMap qpm2 = qpm.subMap["a"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["b"]); QueryPhraseMap qpm3 = qpm2.subMap["b"]; assertFalse(qpm3.terminal); assertEquals(1, qpm3.subMap.size()); assertNotNull(qpm3.subMap["c"]); QueryPhraseMap qpm4 = qpm3.subMap["c"]; assertTrue(qpm4.terminal); assertEquals(1F, qpm4.boost, 0); assertNotNull(qpm4.subMap["d"]); QueryPhraseMap qpm5 = qpm4.subMap["d"]; assertTrue(qpm5.terminal); assertEquals(1F, qpm5.boost, 0); // "b c d"^2, "b d"^3 assertNotNull(qpm.subMap["b"]); qpm2 = qpm.subMap["b"]; assertFalse(qpm2.terminal); assertEquals(2, qpm2.subMap.size()); assertNotNull(qpm2.subMap["c"]); qpm3 = qpm2.subMap["c"]; assertFalse(qpm3.terminal); assertEquals(1, qpm3.subMap.size()); assertNotNull(qpm3.subMap["d"]); qpm4 = qpm3.subMap["d"]; assertTrue(qpm4.terminal); assertEquals(2F, qpm4.boost, 0); assertNotNull(qpm2.subMap["d"]); qpm3 = qpm2.subMap["d"]; assertTrue(qpm3.terminal); assertEquals(3F, qpm3.boost, 0); }
public void TestQueryPhraseMapOverlapPhrases3() { // LUCENENET specific - altered some of the tests because // dictionaries throw KeyNotFoundException rather than returning null. BooleanQuery query = new BooleanQuery(); query.Add(pqF("a", "a", "a", "a"), Occur.SHOULD); query.Add(pqF(2, "a", "a", "a"), Occur.SHOULD); // phraseHighlight = true, fieldMatch = true FieldQuery fq = new FieldQuery(query, true, true); IDictionary <String, QueryPhraseMap> map = fq.rootMaps; assertEquals(1, map.size()); assertFalse(map.TryGetValue(null, out _)); // assertNull(map[null]); assertNotNull(map[F]); QueryPhraseMap qpm = map[F]; assertEquals(1, qpm.subMap.size()); // "a a a" assertNotNull(qpm.subMap["a"]); QueryPhraseMap qpm2 = qpm.subMap["a"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["a"]); QueryPhraseMap qpm3 = qpm2.subMap["a"]; assertFalse(qpm3.terminal); assertEquals(1, qpm3.subMap.size()); assertNotNull(qpm3.subMap["a"]); QueryPhraseMap qpm4 = qpm3.subMap["a"]; assertTrue(qpm4.terminal); // "a a a a" assertEquals(1, qpm4.subMap.size()); assertNotNull(qpm4.subMap["a"]); QueryPhraseMap qpm5 = qpm4.subMap["a"]; assertTrue(qpm5.terminal); // "a a a a a" assertEquals(1, qpm5.subMap.size()); assertNotNull(qpm5.subMap["a"]); QueryPhraseMap qpm6 = qpm5.subMap["a"]; assertTrue(qpm6.terminal); // "a a a a a a" assertEquals(1, qpm6.subMap.size()); assertNotNull(qpm6.subMap["a"]); QueryPhraseMap qpm7 = qpm6.subMap["a"]; assertTrue(qpm7.terminal); }
public void TestQueryPhraseMapOverlapPhrases3() { BooleanQuery query = new BooleanQuery(); query.Add(pqF("a", "a", "a", "a"), Occur.SHOULD); query.Add(pqF(2, "a", "a", "a"), Occur.SHOULD); // phraseHighlight = true, fieldMatch = true FieldQuery fq = new FieldQuery(query, true, true); IDictionary <String, QueryPhraseMap> map = fq.rootMaps; assertEquals(1, map.size()); assertNull(map[null]); assertNotNull(map[F]); QueryPhraseMap qpm = map[F]; assertEquals(1, qpm.subMap.size()); // "a a a" assertNotNull(qpm.subMap["a"]); QueryPhraseMap qpm2 = qpm.subMap["a"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["a"]); QueryPhraseMap qpm3 = qpm2.subMap["a"]; assertFalse(qpm3.terminal); assertEquals(1, qpm3.subMap.size()); assertNotNull(qpm3.subMap["a"]); QueryPhraseMap qpm4 = qpm3.subMap["a"]; assertTrue(qpm4.terminal); // "a a a a" assertEquals(1, qpm4.subMap.size()); assertNotNull(qpm4.subMap["a"]); QueryPhraseMap qpm5 = qpm4.subMap["a"]; assertTrue(qpm5.terminal); // "a a a a a" assertEquals(1, qpm5.subMap.size()); assertNotNull(qpm5.subMap["a"]); QueryPhraseMap qpm6 = qpm5.subMap["a"]; assertTrue(qpm6.terminal); // "a a a a a a" assertEquals(1, qpm6.subMap.size()); assertNotNull(qpm6.subMap["a"]); QueryPhraseMap qpm7 = qpm6.subMap["a"]; assertTrue(qpm7.terminal); }
private void defgMultiTermQueryTest(Query query) { FieldQuery fq = new FieldQuery(query, reader, true, true); QueryPhraseMap qpm = fq.GetFieldTermMap(F, "defg"); assertNotNull(qpm); assertNull(fq.GetFieldTermMap(F, "dog")); List <TermInfo> phraseCandidate = new List <TermInfo>(); phraseCandidate.Add(new TermInfo("defg", 0, 12, 0, 1)); assertNotNull(fq.SearchPhrase(F, phraseCandidate)); }
public void TestGetRootMapNotFieldMatch() { Query dummy = pqF("DUMMY"); FieldQuery fq = new FieldQuery(dummy, true, false); QueryPhraseMap rootMap1 = fq.GetRootMap(tq("a")); QueryPhraseMap rootMap2 = fq.GetRootMap(tq("a")); assertTrue(rootMap1 == rootMap2); QueryPhraseMap rootMap3 = fq.GetRootMap(tq("b")); assertTrue(rootMap1 == rootMap3); QueryPhraseMap rootMap4 = fq.GetRootMap(tq(F1, "b")); assertTrue(rootMap4 == rootMap3); }
/// <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; } } } }
public void TestQueryPhraseMapOverlap2gram() { // LUCENENET specific - altered some of the tests because // dictionaries throw KeyNotFoundException rather than returning null. BooleanQuery query = new BooleanQuery(); query.Add(toPhraseQuery(analyze("abc", F, analyzerB), F), Occur.MUST); query.Add(toPhraseQuery(analyze("bcd", F, analyzerB), F), Occur.MUST); // phraseHighlight = true, fieldMatch = true FieldQuery fq = new FieldQuery(query, true, true); IDictionary <String, QueryPhraseMap> map = fq.rootMaps; assertEquals(1, map.size()); assertFalse(map.TryGetValue(null, out _)); // assertNull(map[null]); assertNotNull(map[F]); QueryPhraseMap qpm = map[F]; assertEquals(2, qpm.subMap.size()); // "ab bc" assertNotNull(qpm.subMap["ab"]); QueryPhraseMap qpm2 = qpm.subMap["ab"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["bc"]); QueryPhraseMap qpm3 = qpm2.subMap["bc"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); // "ab bc cd" assertEquals(1, qpm3.subMap.size()); assertNotNull(qpm3.subMap["cd"]); QueryPhraseMap qpm4 = qpm3.subMap["cd"]; assertTrue(qpm4.terminal); assertEquals(1F, qpm4.boost, 0); // "bc cd" assertNotNull(qpm.subMap["bc"]); qpm2 = qpm.subMap["bc"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["cd"]); qpm3 = qpm2.subMap["cd"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); // phraseHighlight = false, fieldMatch = true fq = new FieldQuery(query, false, true); map = fq.rootMaps; assertEquals(1, map.size()); assertFalse(map.TryGetValue(null, out _)); // assertNull(map[null]); assertNotNull(map[F]); qpm = map[F]; assertEquals(3, qpm.subMap.size()); // "ab bc" assertNotNull(qpm.subMap["ab"]); qpm2 = qpm.subMap["ab"]; assertTrue(qpm2.terminal); assertEquals(1F, qpm2.boost, 0); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["bc"]); qpm3 = qpm2.subMap["bc"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); // "ab bc cd" assertEquals(1, qpm3.subMap.size()); assertNotNull(qpm3.subMap["cd"]); qpm4 = qpm3.subMap["cd"]; assertTrue(qpm4.terminal); assertEquals(1F, qpm4.boost, 0); // "bc cd" assertNotNull(qpm.subMap["bc"]); qpm2 = qpm.subMap["bc"]; assertTrue(qpm2.terminal); assertEquals(1F, qpm2.boost, 0); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["cd"]); qpm3 = qpm2.subMap["cd"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); // "cd" assertNotNull(qpm.subMap["cd"]); qpm2 = qpm.subMap["cd"]; assertTrue(qpm2.terminal); assertEquals(1F, qpm2.boost, 0); assertEquals(0, qpm2.subMap.size()); }
public void TestQueryPhraseMap2PhrasesFields() { // LUCENENET specific - altered some of the tests because // dictionaries throw KeyNotFoundException rather than returning null. BooleanQuery query = new BooleanQuery(); query.Add(pq(F1, "a", "b"), Occur.SHOULD); query.Add(pq(2F, F2, "c", "d"), Occur.SHOULD); // phraseHighlight = true, fieldMatch = true FieldQuery fq = new FieldQuery(query, true, true); IDictionary <String, QueryPhraseMap> map = fq.rootMaps; assertEquals(2, map.size()); assertFalse(map.TryGetValue(null, out _)); // assertNull(map[null]); // "a b" assertNotNull(map[F1]); QueryPhraseMap qpm = map[F1]; assertEquals(1, qpm.subMap.size()); assertNotNull(qpm.subMap["a"]); QueryPhraseMap qpm2 = qpm.subMap["a"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["b"]); QueryPhraseMap qpm3 = qpm2.subMap["b"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); // "c d"^2 assertNotNull(map[F2]); qpm = map[F2]; assertEquals(1, qpm.subMap.size()); assertNotNull(qpm.subMap["c"]); qpm2 = qpm.subMap["c"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["d"]); qpm3 = qpm2.subMap["d"]; assertTrue(qpm3.terminal); assertEquals(2F, qpm3.boost, 0); // phraseHighlight = true, fieldMatch = false fq = new FieldQuery(query, true, false); map = fq.rootMaps; assertEquals(1, map.size()); assertFalse(map.TryGetValue(F1, out _)); // assertNull(map[F1]); assertFalse(map.TryGetValue(F2, out _)); // assertNull(map[F2]); assertNotNull(map[null]); qpm = map[null]; assertEquals(2, qpm.subMap.size()); // "a b" assertNotNull(qpm.subMap["a"]); qpm2 = qpm.subMap["a"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["b"]); qpm3 = qpm2.subMap["b"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); // "c d"^2 assertNotNull(qpm.subMap["c"]); qpm2 = qpm.subMap["c"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["d"]); qpm3 = qpm2.subMap["d"]; assertTrue(qpm3.terminal); assertEquals(2F, qpm3.boost, 0); }
public void TestQueryPhraseMap1Term() { // LUCENENET specific - altered some of the tests because // dictionaries throw KeyNotFoundException rather than returning null. Query query = tq("a"); // phraseHighlight = true, fieldMatch = true FieldQuery fq = new FieldQuery(query, true, true); IDictionary <String, QueryPhraseMap> map = fq.rootMaps; assertEquals(1, map.size()); assertFalse(map.TryGetValue(null, out _)); // assertNull(map[null]); assertNotNull(map[F]); QueryPhraseMap qpm = map[F]; assertEquals(1, qpm.subMap.size()); assertTrue(qpm.subMap["a"] != null); assertTrue(qpm.subMap["a"].terminal); assertEquals(1F, qpm.subMap["a"].boost, 0); // phraseHighlight = true, fieldMatch = false fq = new FieldQuery(query, true, false); map = fq.rootMaps; assertEquals(1, map.size()); assertFalse(map.TryGetValue(F, out _)); // assertNull(map[F]); assertNotNull(map[null]); qpm = map[null]; assertEquals(1, qpm.subMap.size()); assertTrue(qpm.subMap["a"] != null); assertTrue(qpm.subMap["a"].terminal); assertEquals(1F, qpm.subMap["a"].boost, 0); // phraseHighlight = false, fieldMatch = true fq = new FieldQuery(query, false, true); map = fq.rootMaps; assertEquals(1, map.size()); assertFalse(map.TryGetValue(null, out _)); // assertNull(map[null]); assertNotNull(map[F]); qpm = map[F]; assertEquals(1, qpm.subMap.size()); assertTrue(qpm.subMap["a"] != null); assertTrue(qpm.subMap["a"].terminal); assertEquals(1F, qpm.subMap["a"].boost, 0); // phraseHighlight = false, fieldMatch = false fq = new FieldQuery(query, false, false); map = fq.rootMaps; assertEquals(1, map.size()); assertFalse(map.TryGetValue(F, out _)); // assertNull(map[F]); assertNotNull(map[null]); qpm = map[null]; assertEquals(1, qpm.subMap.size()); assertTrue(qpm.subMap["a"] != null); assertTrue(qpm.subMap["a"].terminal); assertEquals(1F, qpm.subMap["a"].boost, 0); // boost != 1 query = tq(2, "a"); fq = new FieldQuery(query, true, true); map = fq.rootMaps; qpm = map[F]; assertEquals(2F, qpm.subMap["a"].boost, 0); }
public void TestQueryPhraseMapOverlap2gram() { BooleanQuery query = new BooleanQuery(); query.Add(toPhraseQuery(analyze("abc", F, analyzerB), F), Occur.MUST); query.Add(toPhraseQuery(analyze("bcd", F, analyzerB), F), Occur.MUST); // phraseHighlight = true, fieldMatch = true FieldQuery fq = new FieldQuery(query, true, true); IDictionary <String, QueryPhraseMap> map = fq.rootMaps; assertEquals(1, map.size()); assertNull(map[null]); assertNotNull(map[F]); QueryPhraseMap qpm = map[F]; assertEquals(2, qpm.subMap.size()); // "ab bc" assertNotNull(qpm.subMap["ab"]); QueryPhraseMap qpm2 = qpm.subMap["ab"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["bc"]); QueryPhraseMap qpm3 = qpm2.subMap["bc"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); // "ab bc cd" assertEquals(1, qpm3.subMap.size()); assertNotNull(qpm3.subMap["cd"]); QueryPhraseMap qpm4 = qpm3.subMap["cd"]; assertTrue(qpm4.terminal); assertEquals(1F, qpm4.boost, 0); // "bc cd" assertNotNull(qpm.subMap["bc"]); qpm2 = qpm.subMap["bc"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["cd"]); qpm3 = qpm2.subMap["cd"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); // phraseHighlight = false, fieldMatch = true fq = new FieldQuery(query, false, true); map = fq.rootMaps; assertEquals(1, map.size()); assertNull(map[null]); assertNotNull(map[F]); qpm = map[F]; assertEquals(3, qpm.subMap.size()); // "ab bc" assertNotNull(qpm.subMap["ab"]); qpm2 = qpm.subMap["ab"]; assertTrue(qpm2.terminal); assertEquals(1F, qpm2.boost, 0); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["bc"]); qpm3 = qpm2.subMap["bc"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); // "ab bc cd" assertEquals(1, qpm3.subMap.size()); assertNotNull(qpm3.subMap["cd"]); qpm4 = qpm3.subMap["cd"]; assertTrue(qpm4.terminal); assertEquals(1F, qpm4.boost, 0); // "bc cd" assertNotNull(qpm.subMap["bc"]); qpm2 = qpm.subMap["bc"]; assertTrue(qpm2.terminal); assertEquals(1F, qpm2.boost, 0); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["cd"]); qpm3 = qpm2.subMap["cd"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); // "cd" assertNotNull(qpm.subMap["cd"]); qpm2 = qpm.subMap["cd"]; assertTrue(qpm2.terminal); assertEquals(1F, qpm2.boost, 0); assertEquals(0, qpm2.subMap.size()); }
public void TestQueryPhraseMap2PhrasesFields() { BooleanQuery query = new BooleanQuery(); query.Add(pq(F1, "a", "b"), Occur.SHOULD); query.Add(pq(2F, F2, "c", "d"), Occur.SHOULD); // phraseHighlight = true, fieldMatch = true FieldQuery fq = new FieldQuery(query, true, true); IDictionary <String, QueryPhraseMap> map = fq.rootMaps; assertEquals(2, map.size()); assertNull(map[null]); // "a b" assertNotNull(map[F1]); QueryPhraseMap qpm = map[F1]; assertEquals(1, qpm.subMap.size()); assertNotNull(qpm.subMap["a"]); QueryPhraseMap qpm2 = qpm.subMap["a"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["b"]); QueryPhraseMap qpm3 = qpm2.subMap["b"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); // "c d"^2 assertNotNull(map[F2]); qpm = map[F2]; assertEquals(1, qpm.subMap.size()); assertNotNull(qpm.subMap["c"]); qpm2 = qpm.subMap["c"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["d"]); qpm3 = qpm2.subMap["d"]; assertTrue(qpm3.terminal); assertEquals(2F, qpm3.boost, 0); // phraseHighlight = true, fieldMatch = false fq = new FieldQuery(query, true, false); map = fq.rootMaps; assertEquals(1, map.size()); assertNull(map[F1]); assertNull(map[F2]); assertNotNull(map[null]); qpm = map[null]; assertEquals(2, qpm.subMap.size()); // "a b" assertNotNull(qpm.subMap["a"]); qpm2 = qpm.subMap["a"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["b"]); qpm3 = qpm2.subMap["b"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); // "c d"^2 assertNotNull(qpm.subMap["c"]); qpm2 = qpm.subMap["c"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["d"]); qpm3 = qpm2.subMap["d"]; assertTrue(qpm3.terminal); assertEquals(2F, qpm3.boost, 0); }
public void TestQueryPhraseMap1Phrase() { Query query = pqF("a", "b"); // phraseHighlight = true, fieldMatch = true FieldQuery fq = new FieldQuery(query, true, true); IDictionary <String, QueryPhraseMap> map = fq.rootMaps; assertEquals(1, map.size()); assertNull(map[null]); assertNotNull(map[F]); QueryPhraseMap qpm = map[F]; assertEquals(1, qpm.subMap.size()); assertNotNull(qpm.subMap["a"]); QueryPhraseMap qpm2 = qpm.subMap["a"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["b"]); QueryPhraseMap qpm3 = qpm2.subMap["b"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); // phraseHighlight = true, fieldMatch = false fq = new FieldQuery(query, true, false); map = fq.rootMaps; assertEquals(1, map.size()); assertNull(map[F]); assertNotNull(map[null]); qpm = map[null]; assertEquals(1, qpm.subMap.size()); assertNotNull(qpm.subMap["a"]); qpm2 = qpm.subMap["a"]; assertFalse(qpm2.terminal); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["b"]); qpm3 = qpm2.subMap["b"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); // phraseHighlight = false, fieldMatch = true fq = new FieldQuery(query, false, true); map = fq.rootMaps; assertEquals(1, map.size()); assertNull(map[null]); assertNotNull(map[F]); qpm = map[F]; assertEquals(2, qpm.subMap.size()); assertNotNull(qpm.subMap["a"]); qpm2 = qpm.subMap["a"]; assertTrue(qpm2.terminal); assertEquals(1F, qpm2.boost, 0); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["b"]); qpm3 = qpm2.subMap["b"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); assertNotNull(qpm.subMap["b"]); qpm2 = qpm.subMap["b"]; assertTrue(qpm2.terminal); assertEquals(1F, qpm2.boost, 0); // phraseHighlight = false, fieldMatch = false fq = new FieldQuery(query, false, false); map = fq.rootMaps; assertEquals(1, map.size()); assertNull(map[F]); assertNotNull(map[null]); qpm = map[null]; assertEquals(2, qpm.subMap.size()); assertNotNull(qpm.subMap["a"]); qpm2 = qpm.subMap["a"]; assertTrue(qpm2.terminal); assertEquals(1F, qpm2.boost, 0); assertEquals(1, qpm2.subMap.size()); assertNotNull(qpm2.subMap["b"]); qpm3 = qpm2.subMap["b"]; assertTrue(qpm3.terminal); assertEquals(1F, qpm3.boost, 0); assertNotNull(qpm.subMap["b"]); qpm2 = qpm.subMap["b"]; assertTrue(qpm2.terminal); assertEquals(1F, qpm2.boost, 0); // boost != 1 query = pqF(2, "a", "b"); // phraseHighlight = false, fieldMatch = false fq = new FieldQuery(query, false, false); map = fq.rootMaps; qpm = map[null]; qpm2 = qpm.subMap["a"]; assertEquals(2F, qpm2.boost, 0); qpm3 = qpm2.subMap["b"]; assertEquals(2F, qpm3.boost, 0); qpm2 = qpm.subMap["b"]; assertEquals(2F, qpm2.boost, 0); }