Search in sources :

Example 21 with TermQuery

use of org.apache.lucene.search.TermQuery in project elasticsearch by elastic.

the class QueryAnalyzerTests method testExtractQueryMetadata_matchAllDocsQuery.

public void testExtractQueryMetadata_matchAllDocsQuery() {
    expectThrows(UnsupportedQueryException.class, () -> analyze(new MatchAllDocsQuery()));
    BooleanQuery.Builder builder = new BooleanQuery.Builder();
    builder.add(new TermQuery(new Term("field", "value")), BooleanClause.Occur.MUST);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST);
    Result result = analyze(builder.build());
    assertThat(result.verified, is(false));
    assertTermsEqual(result.terms, new Term("field", "value"));
    builder = new BooleanQuery.Builder();
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST);
    BooleanQuery bq1 = builder.build();
    expectThrows(UnsupportedQueryException.class, () -> analyze(bq1));
    builder = new BooleanQuery.Builder();
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST_NOT);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST);
    BooleanQuery bq2 = builder.build();
    expectThrows(UnsupportedQueryException.class, () -> analyze(bq2));
    builder = new BooleanQuery.Builder();
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.SHOULD);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.SHOULD);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.SHOULD);
    BooleanQuery bq3 = builder.build();
    expectThrows(UnsupportedQueryException.class, () -> analyze(bq3));
    builder = new BooleanQuery.Builder();
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST_NOT);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.SHOULD);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.SHOULD);
    BooleanQuery bq4 = builder.build();
    expectThrows(UnsupportedQueryException.class, () -> analyze(bq4));
    builder = new BooleanQuery.Builder();
    builder.add(new TermQuery(new Term("field", "value")), BooleanClause.Occur.SHOULD);
    builder.add(new MatchAllDocsQuery(), BooleanClause.Occur.SHOULD);
    BooleanQuery bq5 = builder.build();
    expectThrows(UnsupportedQueryException.class, () -> analyze(bq5));
}
Also used : BooleanQuery(org.apache.lucene.search.BooleanQuery) SpanTermQuery(org.apache.lucene.search.spans.SpanTermQuery) BlendedTermQuery(org.apache.lucene.queries.BlendedTermQuery) TermQuery(org.apache.lucene.search.TermQuery) Term(org.apache.lucene.index.Term) QueryAnalyzer.selectTermListWithTheLongestShortestTerm(org.elasticsearch.percolator.QueryAnalyzer.selectTermListWithTheLongestShortestTerm) MatchAllDocsQuery(org.apache.lucene.search.MatchAllDocsQuery) Result(org.elasticsearch.percolator.QueryAnalyzer.Result)

Example 22 with TermQuery

use of org.apache.lucene.search.TermQuery in project elasticsearch by elastic.

the class SimpleLuceneTests method testBoost.

public void testBoost() throws Exception {
    Directory dir = new RAMDirectory();
    IndexWriter indexWriter = new IndexWriter(dir, new IndexWriterConfig(Lucene.STANDARD_ANALYZER));
    for (int i = 0; i < 100; i++) {
        // TODO (just setting the boost value does not seem to work...)
        StringBuilder value = new StringBuilder().append("value");
        for (int j = 0; j < i; j++) {
            value.append(" ").append("value");
        }
        Document document = new Document();
        TextField textField = new TextField("_id", Integer.toString(i), Field.Store.YES);
        textField.setBoost(i);
        document.add(textField);
        textField = new TextField("value", value.toString(), Field.Store.YES);
        textField.setBoost(i);
        document.add(textField);
        indexWriter.addDocument(document);
    }
    IndexReader reader = DirectoryReader.open(indexWriter);
    IndexSearcher searcher = new IndexSearcher(reader);
    TermQuery query = new TermQuery(new Term("value", "value"));
    TopDocs topDocs = searcher.search(query, 100);
    assertThat(100, equalTo(topDocs.totalHits));
    for (int i = 0; i < topDocs.scoreDocs.length; i++) {
        Document doc = searcher.doc(topDocs.scoreDocs[i].doc);
        //            System.out.println(doc.get("id") + ": " + searcher.explain(query, topDocs.scoreDocs[i].doc));
        assertThat(doc.get("_id"), equalTo(Integer.toString(100 - i - 1)));
    }
    indexWriter.close();
}
Also used : IndexSearcher(org.apache.lucene.search.IndexSearcher) TermQuery(org.apache.lucene.search.TermQuery) Term(org.apache.lucene.index.Term) Document(org.apache.lucene.document.Document) RAMDirectory(org.apache.lucene.store.RAMDirectory) TopDocs(org.apache.lucene.search.TopDocs) IndexWriter(org.apache.lucene.index.IndexWriter) IndexReader(org.apache.lucene.index.IndexReader) TextField(org.apache.lucene.document.TextField) RAMDirectory(org.apache.lucene.store.RAMDirectory) Directory(org.apache.lucene.store.Directory) IndexWriterConfig(org.apache.lucene.index.IndexWriterConfig)

Example 23 with TermQuery

use of org.apache.lucene.search.TermQuery in project elasticsearch by elastic.

the class SimpleLuceneTests method testOrdering.

/**
     * Here, we verify that the order that we add fields to a document counts, and not the lexi order
     * of the field. This means that heavily accessed fields that use field selector should be added
     * first (with load and break).
     */
public void testOrdering() throws Exception {
    Directory dir = new RAMDirectory();
    IndexWriter indexWriter = new IndexWriter(dir, new IndexWriterConfig(Lucene.STANDARD_ANALYZER));
    Document document = new Document();
    document.add(new TextField("_id", "1", Field.Store.YES));
    document.add(new TextField("#id", "1", Field.Store.YES));
    indexWriter.addDocument(document);
    IndexReader reader = DirectoryReader.open(indexWriter);
    IndexSearcher searcher = new IndexSearcher(reader);
    TopDocs topDocs = searcher.search(new TermQuery(new Term("_id", "1")), 1);
    final ArrayList<String> fieldsOrder = new ArrayList<>();
    searcher.doc(topDocs.scoreDocs[0].doc, new StoredFieldVisitor() {

        @Override
        public Status needsField(FieldInfo fieldInfo) throws IOException {
            fieldsOrder.add(fieldInfo.name);
            return Status.YES;
        }
    });
    assertThat(fieldsOrder.size(), equalTo(2));
    assertThat(fieldsOrder.get(0), equalTo("_id"));
    assertThat(fieldsOrder.get(1), equalTo("#id"));
    indexWriter.close();
}
Also used : IndexSearcher(org.apache.lucene.search.IndexSearcher) TermQuery(org.apache.lucene.search.TermQuery) ArrayList(java.util.ArrayList) Term(org.apache.lucene.index.Term) IOException(java.io.IOException) Document(org.apache.lucene.document.Document) RAMDirectory(org.apache.lucene.store.RAMDirectory) TopDocs(org.apache.lucene.search.TopDocs) IndexWriter(org.apache.lucene.index.IndexWriter) StoredFieldVisitor(org.apache.lucene.index.StoredFieldVisitor) IndexReader(org.apache.lucene.index.IndexReader) TextField(org.apache.lucene.document.TextField) FieldInfo(org.apache.lucene.index.FieldInfo) RAMDirectory(org.apache.lucene.store.RAMDirectory) Directory(org.apache.lucene.store.Directory) IndexWriterConfig(org.apache.lucene.index.IndexWriterConfig)

Example 24 with TermQuery

use of org.apache.lucene.search.TermQuery in project elasticsearch by elastic.

the class VectorHighlighterTests method testVectorHighlighterNoTermVector.

public void testVectorHighlighterNoTermVector() throws Exception {
    Directory dir = new RAMDirectory();
    IndexWriter indexWriter = new IndexWriter(dir, new IndexWriterConfig(Lucene.STANDARD_ANALYZER));
    Document document = new Document();
    document.add(new TextField("_id", "1", Field.Store.YES));
    document.add(new TextField("content", "the big bad dog", Field.Store.YES));
    indexWriter.addDocument(document);
    IndexReader reader = DirectoryReader.open(indexWriter);
    IndexSearcher searcher = new IndexSearcher(reader);
    TopDocs topDocs = searcher.search(new TermQuery(new Term("_id", "1")), 1);
    assertThat(topDocs.totalHits, equalTo(1));
    FastVectorHighlighter highlighter = new FastVectorHighlighter();
    String fragment = highlighter.getBestFragment(highlighter.getFieldQuery(new TermQuery(new Term("content", "bad"))), reader, topDocs.scoreDocs[0].doc, "content", 30);
    assertThat(fragment, nullValue());
}
Also used : IndexSearcher(org.apache.lucene.search.IndexSearcher) TermQuery(org.apache.lucene.search.TermQuery) FastVectorHighlighter(org.apache.lucene.search.vectorhighlight.FastVectorHighlighter) Term(org.apache.lucene.index.Term) Document(org.apache.lucene.document.Document) RAMDirectory(org.apache.lucene.store.RAMDirectory) TopDocs(org.apache.lucene.search.TopDocs) IndexWriter(org.apache.lucene.index.IndexWriter) IndexReader(org.apache.lucene.index.IndexReader) TextField(org.apache.lucene.document.TextField) RAMDirectory(org.apache.lucene.store.RAMDirectory) Directory(org.apache.lucene.store.Directory) IndexWriterConfig(org.apache.lucene.index.IndexWriterConfig)

Example 25 with TermQuery

use of org.apache.lucene.search.TermQuery in project elasticsearch by elastic.

the class VectorHighlighterTests method testVectorHighlighter.

public void testVectorHighlighter() throws Exception {
    Directory dir = new RAMDirectory();
    IndexWriter indexWriter = new IndexWriter(dir, new IndexWriterConfig(Lucene.STANDARD_ANALYZER));
    Document document = new Document();
    document.add(new TextField("_id", "1", Field.Store.YES));
    FieldType vectorsType = new FieldType(TextField.TYPE_STORED);
    vectorsType.setStoreTermVectors(true);
    vectorsType.setStoreTermVectorPositions(true);
    vectorsType.setStoreTermVectorOffsets(true);
    document.add(new Field("content", "the big bad dog", vectorsType));
    indexWriter.addDocument(document);
    IndexReader reader = DirectoryReader.open(indexWriter);
    IndexSearcher searcher = new IndexSearcher(reader);
    TopDocs topDocs = searcher.search(new TermQuery(new Term("_id", "1")), 1);
    assertThat(topDocs.totalHits, equalTo(1));
    FastVectorHighlighter highlighter = new FastVectorHighlighter();
    String fragment = highlighter.getBestFragment(highlighter.getFieldQuery(new TermQuery(new Term("content", "bad"))), reader, topDocs.scoreDocs[0].doc, "content", 30);
    assertThat(fragment, notNullValue());
    assertThat(fragment, equalTo("the big <b>bad</b> dog"));
}
Also used : IndexSearcher(org.apache.lucene.search.IndexSearcher) TermQuery(org.apache.lucene.search.TermQuery) FastVectorHighlighter(org.apache.lucene.search.vectorhighlight.FastVectorHighlighter) Term(org.apache.lucene.index.Term) Document(org.apache.lucene.document.Document) RAMDirectory(org.apache.lucene.store.RAMDirectory) FieldType(org.apache.lucene.document.FieldType) TopDocs(org.apache.lucene.search.TopDocs) Field(org.apache.lucene.document.Field) TextField(org.apache.lucene.document.TextField) IndexWriter(org.apache.lucene.index.IndexWriter) IndexReader(org.apache.lucene.index.IndexReader) TextField(org.apache.lucene.document.TextField) RAMDirectory(org.apache.lucene.store.RAMDirectory) Directory(org.apache.lucene.store.Directory) IndexWriterConfig(org.apache.lucene.index.IndexWriterConfig)

Aggregations

TermQuery (org.apache.lucene.search.TermQuery)826 Term (org.apache.lucene.index.Term)707 BooleanQuery (org.apache.lucene.search.BooleanQuery)412 Query (org.apache.lucene.search.Query)318 IndexSearcher (org.apache.lucene.search.IndexSearcher)280 Document (org.apache.lucene.document.Document)229 TopDocs (org.apache.lucene.search.TopDocs)195 Directory (org.apache.lucene.store.Directory)171 MatchAllDocsQuery (org.apache.lucene.search.MatchAllDocsQuery)139 PhraseQuery (org.apache.lucene.search.PhraseQuery)135 IndexReader (org.apache.lucene.index.IndexReader)132 Test (org.junit.Test)117 RandomIndexWriter (org.apache.lucene.index.RandomIndexWriter)116 MockAnalyzer (org.apache.lucene.analysis.MockAnalyzer)114 SpanTermQuery (org.apache.lucene.search.spans.SpanTermQuery)106 ArrayList (java.util.ArrayList)101 BoostQuery (org.apache.lucene.search.BoostQuery)95 Field (org.apache.lucene.document.Field)84 PrefixQuery (org.apache.lucene.search.PrefixQuery)80 IOException (java.io.IOException)69