THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
LuceneQueryFactory
Code Block |
---|
public enum ResultType { /** * Query results only contain value, which is the default setting. * If field projection is specified, use projected fields' values instead of whole domain object */ VALUE, /** * Query results contain score */ SCORE, /** * Query results contain key */ KEY }; /** * Set page size for a query result. The default page size is 0 which means no pagination. * If specified negative value, throw IllegalArgumentException * @param pageSize * @return itself */ LuceneQueryFactory setPageSize(int pageSize); /** * Set max limit of result for a query * If specified limit is less or equal to zero, throw IllegalArgumentException * @param limit * @return itself */ LuceneQueryFactory setResultLimit(int limit); /** * set weather to include SCORE, KEY in result * * @param resultTypes * @return itself */ LuceneQueryFactory setResultTypes(ResultType... resultTypes); /** * Set a list of fields for result projection. * * @param fieldNames * @return itself */ LuceneQueryFactory setProjectionFields(String... fieldNames); /** * Create wrapper object for lucene's QueryParser object. * The queryString is using lucene QueryParser's syntax. QueryParser is for easy-to-use * with human understandable syntax. * * @param regionName region name * @param indexName index name * @param queryString query string in lucene QueryParser's syntax * @param analyzer lucene Analyzer to parse the queryString * @return LuceneQuery object * @throws ParseException */ public LuceneQuery create(String indexName, String regionName, String queryString, Analyzer analyzer) throws ParseException; /** * Create wrapper object for lucene's QueryParser object using default standard analyzer. * The queryString is using lucene QueryParser's syntax. QueryParser is for easy-to-use * with human understandable syntax. * * @param regionName region name * @param indexName index name * @param queryString query string in lucene QueryParser's syntax * @return LuceneQuery object * @throws ParseException */ public LuceneQuery create(String indexName, String regionName, String queryString) throws ParseException; /** * Create wrapper object for lucene's Query object. * Advanced lucene users can customized their own Query object and directly use in this API. * * @param regionName region name * @param indexName index name * @param query lucene Query object * @return LuceneQuery object */ public LuceneQuery create(String indexName, String regionName, Query query); |
LuceneQuery
Code Block |
---|
/** * Provides wrapper object of Lucene's Query object and execute the search. * <p>Instances of this interface are created using * {@link LuceneQueryFactory#create}. * */ public interface LuceneQuery { /** * Execute the search and get results. */ public LuceneQueryResults<?> search(); /** * Get page size setting of current query. */ public int getPageSize(); /** * Get limit size setting of current query. */ public int getLimit(); /** * Get result types setting of current query. */ public ResultType[] getResultTypes(); /** * Get projected fields setting of current query. */ public String[] getProjectedFieldNames(); } |
LuceneResultStruct
Code Block |
---|
/** * Return the value associated with the given field name * * @param fieldName the String name of the field * @return the value associated with the specified field * @throws IllegalArgumentException If this struct does not have a field named fieldName */ public Object getProjectedField(String fieldName); /** * Return key of the entry * * @return key * @throws IllegalArgumentException If this struct does not contain key */ public Object getKey(); /** * Return value of the entry * * @return value the whole domain object * @throws IllegalArgumentException If this struct does not contain value */ public Object getValue(); /** * Return score of the query * * @return score * @throws IllegalArgumentException If this struct does not contain score */ public Double getScore(); /** * Get the types of values ordered list * Item in the list could be either ResultType, or field name * @return the array of result types */ public Object[] getNames(); /** * Get the values in same order as result types * @return the array of values */ public Object[] getResultValues(); } |
Examples
Code Block |
---|
// Get LuceneService LuceneService luceneService = LuceneServiceLuceneServiceProvider.get(cache); // Create Index on fields with default analyzer: LuceneIndex index = luceneService.createIndex(indexName, regionName, "field1", "field2", "field3"); // create index on fields with specified analyzer: LuceneIndex index = luceneService.createIndex(indexName, regionName, analyzerPerField); // Create Query LuceneQuery query = luceneService.createLuceneQueryFactory().setLimit(200).setPageSize(20) .setResultType(SCORE, VALUE, KEY).setFieldProjection("field1", "field2") .create(indexName, regionName, querystring, analyzer); // Search using Query LuceneQueryResults results = query.search(); List values = results.getNextPage(); // return all results in one page // Pagination while (results.hasNextPage()) List page = results.getNextPage(); // return result page by page for (LuceneResultStruct r : page) { System.out.prinlnt(r.getValue()); } } |
...