You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by Scott Tiger <m....@gmail.com> on 2007/09/18 20:31:29 UTC
Is there a FilterQueryParser?
I want get BooleanFilter contains two RangeFilters from query string.
Can I use FilterQuery to get RangeFilter?
example:
my query string:
field1:[0 TO 100] AND field2:[1000 TO 2000]
BooleanFilter I want:
BooleanFilter bf = new BooleanFilter();
bf.add(
new FilterClause(
new RangeFilter("field1","0", "100", true, true),
BooleanClause.Occur.MUST
)
);
bf.add(
new FilterClause(
new RangeFilter("field2", "1000", "2000", true, true),
BooleanClause.Occur.MUST
)
);
QueryFilter example:
QueryParser qp = new QueryParser("", new KeywordAnalyzer());
Query query = qp.parse("field1:[0 TO 100] AND filed2:[1000 TO 2000]");
Filter filter = new CachingWrapperFilter(new QueryWrapperFilter(query));
---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org
Re: Is there a FilterQueryParser?
Posted by markharw00d <ma...@yahoo.co.uk>.
Scott Tiger wrote:
> I want get BooleanFilter contains two RangeFilters from query string.
>
The XMLQueryParser may be of interest.
See BooleanFilter.xml and CachedFilter.xml examples in the
XMLQueryParser Junit tests.
I typically use QueryTemplateManager to transform user input provided in
a form using a stylesheet encapsulating the query/filtering logic. See
TestQueryTemplateManager Junit test for an example. Criteria like dates
and price ranges typically have structured fields in forms and get
mapped to RangeFilters in the query template. Structured fields with
limited options for values (e.g. status:draft/published) are ideal
candidates for surrounding with the <CachedFilter> tag to improve
performance. Form fields that allow standard Lucene query syntax can be
mapped to a <UserQuery> tag for processing.
Cheers
Mark
> Can I use FilterQuery to get RangeFilter?
>
> example:
>
> my query string:
>
> field1:[0 TO 100] AND field2:[1000 TO 2000]
>
> BooleanFilter I want:
> BooleanFilter bf = new BooleanFilter();
> bf.add(
> new FilterClause(
> new RangeFilter("field1","0", "100", true, true),
> BooleanClause.Occur.MUST
> )
> );
> bf.add(
> new FilterClause(
> new RangeFilter("field2", "1000", "2000", true, true),
> BooleanClause.Occur.MUST
> )
> );
>
> QueryFilter example:
> QueryParser qp = new QueryParser("", new KeywordAnalyzer());
> Query query = qp.parse("field1:[0 TO 100] AND filed2:[1000 TO 2000]");
> Filter filter = new CachingWrapperFilter(new QueryWrapperFilter(query));
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org