1
我正在使用Infinispan 6.0,我想使用Infinispan的Query DSL进行搜索。Infinispan Hibernate搜索:org.hibernate.hql.ParsingException:HQLLUCN000003
我看到了分析。在Hibernate DSL中,分析文本字段是有意义的,所以我想用它来搜索标题和副标题。
下面是设置属性代码:
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;
}
,当我尝试查询:
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
我知道设定的分析来没有可以解决这个问题,但我只是想使用分析来改善性能。
任何人有一些想法?