LuceneQueryFactory (Apache Geode 2.0.2)
Description: declaration: package: org.apache.geode.cache.lucene, interface: LuceneQueryFactory

Package org.apache.geode.cache.lucene

# Interface LuceneQueryFactory

public interface LuceneQueryFactory
Factory for configuring a Lucene query. Use this factory to set parameters of the query such as page size, result limit, and query expression. To get an instance of this factory call `LuceneService.createLuceneQueryFactory()`.

To use this factory configure it with the `set` methods and then call one of the create methods on this class. `create(String, String, String, String)` creates a query by parsing a query string. `create(String, String, LuceneQueryProvider)` creates a query based on a custom Lucene `Query` object.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `DEFAULT_LIMIT`
  Default query result limit is 100
  `static final int`
  `DEFAULT_PAGESIZE`
  Default page size of result is 0, which means no pagination

- ## Method Summary

  Modifier and Type
  Method
  Description
  `<K, V> LuceneQuery<K,V>`
  `create(String indexName, String regionName, String queryString, String defaultField)`
  Creates a query based on a query string which is parsed by Lucene's `StandardQueryParser`.
  `<K, V> LuceneQuery<K,V>`
  `create(String indexName, String regionName, LuceneQueryProvider provider)`
  Create a query based on a programmatically constructed Lucene `Query`.
  `LuceneQueryFactory`
  `setLimit(int limit)`
  Set maximum number of results for a query.
  `LuceneQueryFactory`
  `setPageSize(int pageSize)`
  Set page size for a query result.

- ## Field Details

  - ### DEFAULT_LIMIT

    static final int DEFAULT_LIMIT
    Default query result limit is 100
    See Also:
      - Constant Field Values

  - ### DEFAULT_PAGESIZE

    static final int DEFAULT_PAGESIZE
    Default page size of result is 0, which means no pagination
    See Also:
      - Constant Field Values

- ## Method Details

  - ### setPageSize

    LuceneQueryFactory setPageSize(int pageSize)
    Set page size for a query result. The default page size is 0 which means no pagination.
    Parameters:
      `pageSize` - the page size for a query result
    Returns:
      this factory
    Throws:
      `IllegalArgumentException` - if the value is less than 0

  - ### setLimit

    LuceneQueryFactory setLimit(int limit)
    Set maximum number of results for a query. By default, the limit is set to `DEFAULT_LIMIT` which is 100.
    Parameters:
      `limit` - the maximum number of results for a query
    Returns:
      this factory
    Throws:
      `IllegalArgumentException` - if the value is less than or equal to zero.

  - ### create

    <K, V> LuceneQuery<K,V> create(String indexName, String regionName, String queryString, String defaultField)
    Creates a query based on a query string which is parsed by Lucene's `StandardQueryParser`. See the javadocs for `StandardQueryParser` for details on the syntax of the query string. The query string and default field as passed as is to `StandardQueryParser.parse(String, String)`
    Type Parameters:
      `K` - the key type in the query results
      `V` - the value type in the query results
    Parameters:
      `regionName` - region name
      `indexName` - index name
      `queryString` - Query string parsed by Lucene's StandardQueryParser
      `defaultField` - default field used by the Lucene's StandardQueryParser
    Returns:
      LuceneQuery object

  - ### create

    <K, V> LuceneQuery<K,V> create(String indexName, String regionName, LuceneQueryProvider provider)

    Create a query based on a programmatically constructed Lucene `Query`. This can be used for queries that are not covered by `StandardQueryParser`, such as range queries.

    Because Geode may execute the Lucene query on multiple nodes in parallel and `Query` is not serializable, this method requires a serializable `LuceneQueryProvider` that can create a `Query` on the nodes hosting the Lucene index.

    Here's an example of using this method to create a range query on an integer field called "age."

           LuceneQuery query = factory.create("index", "region", index -> IntPoint.newRangeQuery("age", 20, 30))

    Type Parameters:
      `K` - the key type in the query results
      `V` - the value type in the query results
    Parameters:
      `indexName` - index name
      `regionName` - region name
      `provider` - constructs and provides a Lucene `Query`.
    Returns:
      LuceneQuery object