...
Code Block | ||||
---|---|---|---|---|
| ||||
Map< String, Class< ? > > fieldTypes = new LinkedHashMap< String, Class< ? > >(); fieldTypes.put( "modified", Date.class); SearchCondition<SearchBean> filter = new FiqlParser<SearchBean>(SearchBean.class).parse("modified=gt=2007-09-16"); LuceneQueryVisitor<SearchBean> lucene = new LuceneQueryVisitor<SearchBean>("ct", "contents"); lucene.setPrimitiveFieldTypeMap(fieldTypes); lucene.visit(filter); org.apache.lucene.search.Query query = lucene.getQuery(); |
LuceneQueryVisitor supports wide range of date formats, still providing the option to customize it using 'search.date-format' property. This property accepts the date/time pattern expression in the SimpleDateFormat format. Also, since CXF 3.0.2, the LuceneQueryVisitor could be configured to use the Lucene analyzer. The reason to use analyzer is that during Lucene query construction the visitor can use the per-field filters and tokenizers, taking into account stemming, stop-worlds, lower-casing, etc., as such properly processing the filter expression. For example:
Code Block | ||||
---|---|---|---|---|
| ||||
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_4_9);
// Lower-case filter and stop-words filter are part of the StandardAnalyzer
SearchCondition<SearchBean> filter = new FiqlParser<SearchBean>(SearchBean.class).parse("contents==pears and APPLES");
LuceneQueryVisitor<SearchBean> lucene = new LuceneQueryVisitor<SearchBean>("contents", analyzer);
lucene.visit(filter);
org.apache.lucene.search.Query query = lucene.getQuery(); |
LDAP
Mapping of FIQL/OData expressions to LDAP queries as defined by RFC-4515 is supported starting from CXF 2.7.1 with the help of org.apache.cxf.jaxrs.ext.search.ldap.LdapQueryVisitor. Use this visitor when working with LDAP or OSGI.
...