I'm using Infinispan 6.0 and I want to use Infinispan’s Query DSL for searching.
I saw the analyze.YES in Hibernate DSL will make sense to analyze a text field, so i want to use it for searching title and subtitle.
Here is the code for setting properties:
public Properties getProperties()
{
Trace.start("Starting to set the properties.");
SearchMapping mapping = new SearchMapping();
mapping.entity(DatatypeProperty.class).indexed().providedId()
.property("rdfResource", ElementType.FIELD).field().analyze(Analyze.NO).store(Store.YES)
.property("typeId", ElementType.FIELD).field().analyze(Analyze.NO)
.property("xmlLang", ElementType.FIELD).field().analyze(Analyze.NO)
.property("value", ElementType.FIELD).field().analyze(Analyze.YES)
.property("objectTypeId", ElementType.FIELD).field().analyze(Analyze.NO)
.property("partitionValue", ElementType.FIELD).field().analyze(Analyze.NO)
.property("normVal", ElementType.FIELD).field().analyze(Analyze.YES)
.property("stemVal", ElementType.FIELD).field().analyze(Analyze.YES)
.property("tokenVal", ElementType.FIELD).field().analyze(Analyze.YES)
.property("dateVal", ElementType.FIELD).field().analyze(Analyze.YES)
.property("numVal", ElementType.FIELD).field().analyze(Analyze.YES);
Properties properties = new Properties();
properties.put("hibernate.search.default.directory_provider", "ram");
properties.put(Environment.MODEL_MAPPING, mapping);
properties.put("lucene_version", "LUCENE_CURRENT");
Trace.stop("Have already set the properties.");
return properties;
}
And when I try the query:
Caused by: org.hibernate.hql.ParsingException: HQLLUCN000003: No queries can be applied to property normVal in type org.cismef.db.core.object.DatatypeProperty since the property is analyzed.
at org.hibernate.hql.lucene.internal.ClassBasedLuceneQueryResolverDelegate.normalizeProperty(ClassBasedLuceneQueryResolverDelegate.java:218)
at org.hibernate.hql.lucene.internal.ClassBasedLuceneQueryResolverDelegate.normalizePropertyPathTerminus(ClassBasedLuceneQueryResolverDelegate.java:208)
at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.pathedPropertyReference(GeneratedHQLResolver.java:13086)
at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.propertyReferencePath(GeneratedHQLResolver.java:12917)
at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.valueExpressionPrimary(GeneratedHQLResolver.java:7950)
at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.valueExpression(GeneratedHQLResolver.java:7483)
at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.predicate(GeneratedHQLResolver.java:5584)
at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.searchCondition(GeneratedHQLResolver.java:4858)
at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.searchCondition(GeneratedHQLResolver.java:4800)
at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.whereClause(GeneratedHQLResolver.java:2348)
at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.querySpec(GeneratedHQLResolver.java:2203)
at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.queryExpression(GeneratedHQLResolver.java:2106)
at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.queryStatement(GeneratedHQLResolver.java:1745)
at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.queryStatementSet(GeneratedHQLResolver.java:1658)
at org.hibernate.hql.ast.origin.hql.resolve.GeneratedHQLResolver.statement(GeneratedHQLResolver.java:654)
at org.hibernate.hql.ast.spi.QueryResolverProcessor.process(QueryResolverProcessor.java:52)
at org.hibernate.hql.QueryParser.parseQuery(QueryParser.java:82)
at org.infinispan.query.dsl.embedded.impl.EmbeddedLuceneQueryBuilder.build(EmbeddedLuceneQueryBuilder.java:51)
at org.infinispan.query.dsl.embedded.impl.EmbeddedLuceneQueryBuilder.build(EmbeddedLuceneQueryBuilder.java:27)
at org.cismef.csecore.query.DatatypePropertySqlQueryMaker.getDatatypePropertyNoSqlQuery(DatatypePropertySqlQueryMaker.java:152)
at org.cismef.csecore.query.SQLQueryMaker.getNoSQLQuery(SQLQueryMaker.java:157)
at org.cismef.csecore.query.SQLQueryMaker.getNoSQLQuery(SQLQueryMaker.java:78)
at org.cismef.csecore.query.dcquery.DCQueryNode.getNoSql(DCQueryNode.java:60)
at org.cismef.csecore.query.dcquery.DCQueryTree.getNoSql(DCQueryTree.java:168)
at org.cismef.csecore.query.SQLQueryMaker.getNoSQLQuery(SQLQueryMaker.java:35)
at org.cismef.csecore.CSECore.search(CSECore.java:153)
... 25 more
I know set the analyze to No can solve this problem, but I just want to use the Analyze to improve the performance.
Anyone have some ideas????