use of org.apache.lucene.search.suggest.document.TestSuggestField.Entry in project lucene-solr by apache.
the class TestPrefixCompletionQuery method testGhostField.
public void testGhostField() throws Exception {
Analyzer analyzer = new MockAnalyzer(random());
IndexWriter iw = new IndexWriter(dir, iwcWithSuggestField(analyzer, "suggest_field", "suggest_field2", "suggest_field3"));
Document document = new Document();
document.add(new StringField("id", "0", Field.Store.NO));
document.add(new SuggestField("suggest_field", "apples", 3));
iw.addDocument(document);
// need another document so whole segment isn't deleted
iw.addDocument(new Document());
iw.commit();
document = new Document();
document.add(new StringField("id", "1", Field.Store.NO));
document.add(new SuggestField("suggest_field2", "apples", 3));
iw.addDocument(document);
iw.commit();
iw.deleteDocuments(new Term("id", "0"));
// first force merge is OK
iw.forceMerge(1);
// second force merge causes MultiFields to include "suggest_field" in its iteration, yet a null Terms is returned (no documents have
// this field anymore)
iw.addDocument(new Document());
iw.forceMerge(1);
DirectoryReader reader = DirectoryReader.open(iw);
SuggestIndexSearcher indexSearcher = new SuggestIndexSearcher(reader);
PrefixCompletionQuery query = new PrefixCompletionQuery(analyzer, new Term("suggest_field", "app"));
assertEquals(0, indexSearcher.suggest(query, 3, false).totalHits);
query = new PrefixCompletionQuery(analyzer, new Term("suggest_field2", "app"));
assertSuggestions(indexSearcher.suggest(query, 3, false), new Entry("apples", 3));
reader.close();
iw.close();
}
use of org.apache.lucene.search.suggest.document.TestSuggestField.Entry in project lucene-solr by apache.
the class TestFuzzyCompletionQuery method testFuzzyContextQuery.
@Test
public void testFuzzyContextQuery() throws Exception {
Analyzer analyzer = new MockAnalyzer(random());
RandomIndexWriter iw = new RandomIndexWriter(random(), dir, iwcWithSuggestField(analyzer, "suggest_field"));
Document document = new Document();
document.add(new ContextSuggestField("suggest_field", "sduggestion", 1, "type1"));
document.add(new ContextSuggestField("suggest_field", "sudggestion", 1, "type2"));
document.add(new ContextSuggestField("suggest_field", "sugdgestion", 1, "type3"));
iw.addDocument(document);
document = new Document();
document.add(new ContextSuggestField("suggest_field", "suggdestion", 1, "type4"));
document.add(new ContextSuggestField("suggest_field", "suggestion", 1, "type4"));
iw.addDocument(document);
if (rarely()) {
iw.commit();
}
DirectoryReader reader = iw.getReader();
SuggestIndexSearcher suggestIndexSearcher = new SuggestIndexSearcher(reader);
CompletionQuery query = new ContextQuery(new FuzzyCompletionQuery(analyzer, new Term("suggest_field", "sugge")));
TopSuggestDocs suggest = suggestIndexSearcher.suggest(query, 5, false);
assertSuggestions(suggest, new Entry("suggestion", "type4", 4), new Entry("suggdestion", "type4", 4), new Entry("sugdgestion", "type3", 3), new Entry("sudggestion", "type2", 2), new Entry("sduggestion", "type1", 1));
reader.close();
iw.close();
}
use of org.apache.lucene.search.suggest.document.TestSuggestField.Entry in project lucene-solr by apache.
the class TestFuzzyCompletionQuery method testFuzzyFilteredContextQuery.
@Test
public void testFuzzyFilteredContextQuery() throws Exception {
Analyzer analyzer = new MockAnalyzer(random());
RandomIndexWriter iw = new RandomIndexWriter(random(), dir, iwcWithSuggestField(analyzer, "suggest_field"));
Document document = new Document();
document.add(new ContextSuggestField("suggest_field", "sduggestion", 1, "type1"));
document.add(new ContextSuggestField("suggest_field", "sudggestion", 1, "type2"));
document.add(new ContextSuggestField("suggest_field", "sugdgestion", 1, "type3"));
iw.addDocument(document);
document = new Document();
document.add(new ContextSuggestField("suggest_field", "suggdestion", 1, "type4"));
document.add(new ContextSuggestField("suggest_field", "suggestion", 1, "type4"));
iw.addDocument(document);
if (rarely()) {
iw.commit();
}
DirectoryReader reader = iw.getReader();
SuggestIndexSearcher suggestIndexSearcher = new SuggestIndexSearcher(reader);
CompletionQuery fuzzyQuery = new FuzzyCompletionQuery(analyzer, new Term("suggest_field", "sugge"));
ContextQuery contextQuery = new ContextQuery(fuzzyQuery);
contextQuery.addContext("type1", 6);
contextQuery.addContext("type3", 2);
TopSuggestDocs suggest = suggestIndexSearcher.suggest(contextQuery, 5, false);
assertSuggestions(suggest, new Entry("sduggestion", "type1", 1 * (1 + 6)), new Entry("sugdgestion", "type3", 1 * (3 + 2)));
reader.close();
iw.close();
}
use of org.apache.lucene.search.suggest.document.TestSuggestField.Entry in project lucene-solr by apache.
the class TestPrefixCompletionQuery method testAnalyzerWithoutPreservePosAndSep.
public void testAnalyzerWithoutPreservePosAndSep() throws Exception {
Analyzer analyzer = new MockAnalyzer(random(), MockTokenizer.WHITESPACE, true, MockTokenFilter.ENGLISH_STOPSET);
CompletionAnalyzer completionAnalyzer = new CompletionAnalyzer(analyzer, false, false);
RandomIndexWriter iw = new RandomIndexWriter(random(), dir, iwcWithSuggestField(completionAnalyzer, "suggest_field_no_p_sep_or_pos_inc"));
Document document = new Document();
document.add(new SuggestField("suggest_field_no_p_sep_or_pos_inc", "foobar", 7));
document.add(new SuggestField("suggest_field_no_p_sep_or_pos_inc", "foo bar", 8));
document.add(new SuggestField("suggest_field_no_p_sep_or_pos_inc", "the fo", 9));
document.add(new SuggestField("suggest_field_no_p_sep_or_pos_inc", "the foo bar", 10));
iw.addDocument(document);
DirectoryReader reader = iw.getReader();
SuggestIndexSearcher indexSearcher = new SuggestIndexSearcher(reader);
CompletionQuery query = new PrefixCompletionQuery(analyzer, new Term("suggest_field_no_p_sep_or_pos_inc", "fo"));
// all 4
TopSuggestDocs suggest = indexSearcher.suggest(query, 4, false);
assertSuggestions(suggest, new Entry("the foo bar", 10), new Entry("the fo", 9), new Entry("foo bar", 8), new Entry("foobar", 7));
query = new PrefixCompletionQuery(analyzer, new Term("suggest_field_no_p_sep_or_pos_inc", "foob"));
// not the fo
suggest = indexSearcher.suggest(query, 4, false);
assertSuggestions(suggest, new Entry("the foo bar", 10), new Entry("foo bar", 8), new Entry("foobar", 7));
reader.close();
iw.close();
}
use of org.apache.lucene.search.suggest.document.TestSuggestField.Entry in project lucene-solr by apache.
the class TestFuzzyCompletionQuery method testFuzzyQuery.
@Test
public void testFuzzyQuery() throws Exception {
Analyzer analyzer = new MockAnalyzer(random());
RandomIndexWriter iw = new RandomIndexWriter(random(), dir, iwcWithSuggestField(analyzer, "suggest_field"));
Document document = new Document();
document.add(new SuggestField("suggest_field", "suggestion", 2));
document.add(new SuggestField("suggest_field", "suaggestion", 4));
document.add(new SuggestField("suggest_field", "ssuggestion", 1));
iw.addDocument(document);
document = new Document();
document.add(new SuggestField("suggest_field", "sugfoo", 1));
iw.addDocument(document);
if (rarely()) {
iw.commit();
}
DirectoryReader reader = iw.getReader();
SuggestIndexSearcher suggestIndexSearcher = new SuggestIndexSearcher(reader);
CompletionQuery query = new FuzzyCompletionQuery(analyzer, new Term("suggest_field", "sugg"));
TopSuggestDocs suggest = suggestIndexSearcher.suggest(query, 4, false);
assertSuggestions(suggest, new Entry("suaggestion", 4 * 2), new Entry("suggestion", 2 * 3), new Entry("sugfoo", 1 * 3), new Entry("ssuggestion", 1 * 1));
reader.close();
iw.close();
}
Aggregations