directorySelectClass = clazz;\r
}\r
\r
-// queryString = queryString.toLowerCase();\r
\r
- StringBuilder luceneQueryTemplate = new StringBuilder();\r
BooleanQuery finalQuery = new BooleanQuery();\r
BooleanQuery textQuery = new BooleanQuery();\r
- Set<String> freetextFields = new HashSet<String>();\r
\r
LuceneSearch luceneSearch = new LuceneSearch(getSession(), directorySelectClass);\r
- QueryFactory queryBuilder = new QueryFactory(luceneSearch);\r
+ QueryFactory queryFactory = new QueryFactory(luceneSearch);\r
\r
// ---- search criteria\r
-\r
-// luceneQueryTemplate.append("+(");\r
-// luceneQueryTemplate.append("titleCache:(%1$s) ");\r
- freetextFields.add("titleCache");\r
- textQuery.add(queryBuilder.newTermQuery("titleCache", queryString), Occur.SHOULD);\r
+ textQuery.add(queryFactory.newTermQuery("titleCache", queryString), Occur.SHOULD);\r
\r
// common name\r
- freetextFields.add("name");\r
-\r
Query nameQuery;\r
if(languages == null || languages.size() == 0){\r
-// luceneQueryTemplate.append("name:(%1$s) ");\r
- nameQuery = queryBuilder.newTermQuery("name", queryString);\r
+ nameQuery = queryFactory.newTermQuery("name", queryString);\r
} else {\r
nameQuery = new BooleanQuery();\r
BooleanQuery languageSubQuery = new BooleanQuery();\r
-// luceneQueryTemplate.append("(+name:(%1$s) ");\r
for(Language lang : languages){\r
-// luceneQueryTemplate.append(" +language.uuid:" + lang.getUuid().toString());\r
- languageSubQuery.add(queryBuilder.newTermQuery("language.uuid", lang.getUuid().toString()), Occur.SHOULD);\r
+ languageSubQuery.add(queryFactory.newTermQuery("language.uuid", lang.getUuid().toString()), Occur.SHOULD);\r
}\r
- ((BooleanQuery) nameQuery).add(queryBuilder.newTermQuery("name", queryString), Occur.MUST);\r
+ ((BooleanQuery) nameQuery).add(queryFactory.newTermQuery("name", queryString), Occur.MUST);\r
((BooleanQuery) nameQuery).add(languageSubQuery, Occur.MUST);\r
-// luceneQueryTemplate.append(")");\r
}\r
textQuery.add(nameQuery, Occur.SHOULD);\r
\r
\r
// text field from TextData\r
- freetextFields.add("text.ALL");\r
-// appendLocalizedFieldQuery("text", languages, luceneQueryTemplate).append(" ");\r
- textQuery.add(queryBuilder.newLocalizedTermQuery("text", queryString, languages), Occur.SHOULD);\r
+ textQuery.add(queryFactory.newLocalizedTermQuery("text", queryString, languages), Occur.SHOULD);\r
\r
// --- TermBase fields - by representation ----\r
// state field from CategoricalData\r
- freetextFields.add("states.state.representation.ALL");\r
-// appendLocalizedFieldQuery("states.state.representation", languages, luceneQueryTemplate).append(" ");\r
- textQuery.add(queryBuilder.newLocalizedTermQuery("states.state.representation", queryString, languages), Occur.SHOULD);\r
+ textQuery.add(queryFactory.newLocalizedTermQuery("states.state.representation", queryString, languages), Occur.SHOULD);\r
\r
// state field from CategoricalData\r
- freetextFields.add("states.modifyingText.ALL");\r
-// appendLocalizedFieldQuery("states.modifyingText", languages, luceneQueryTemplate).append(" ");\r
- textQuery.add(queryBuilder.newLocalizedTermQuery("states.modifyingText", queryString, languages), Occur.SHOULD);\r
-// luceneQueryTemplate.append(") ");\r
+ textQuery.add(queryFactory.newLocalizedTermQuery("states.modifyingText", queryString, languages), Occur.SHOULD);\r
\r
finalQuery.add(textQuery, Occur.MUST);\r
// --- classification ----\r
\r
if(classification != null){\r
-// luceneQueryTemplate.append("+inDescription.taxon.taxonNodes.classification.id:").append(PaddedIntegerBridge.paddInteger(classification.getId())).append(" ");\r
- finalQuery.add(queryBuilder.newEntityIdQuery("inDescription.taxon.taxonNodes.classification.id", classification), Occur.MUST);\r
+ finalQuery.add(queryFactory.newEntityIdQuery("inDescription.taxon.taxonNodes.classification.id", classification), Occur.MUST);\r
}\r
\r
// --- IdentifieableEntity fields - by uuid\r
if(features != null && features.size() > 0 ){\r
- finalQuery.add(queryBuilder.newEntityUuidQuery("feature.uuid", features), Occur.MUST);\r
-// luceneQueryTemplate.append("+feature.uuid:(");\r
-// for(Feature feature : features){\r
-// luceneQueryTemplate.append(feature.getUuid()).append(" ");\r
-// }\r
-// luceneQueryTemplate.append(") ");\r
+ finalQuery.add(queryFactory.newEntityUuidQuery("feature.uuid", features), Occur.MUST);\r
}\r
\r
// the description must be associated with a taxon\r
-// luceneQueryTemplate.append("+inDescription.taxon.id:[ " + PaddedIntegerBridge.paddInteger(0) + " TO " + PaddedIntegerBridge.paddInteger(Integer.MAX_VALUE) + "] ");\r
- //luceneQueryTemplate.append("-inDescription.taxon.id:" + PaddedIntegerBridge.NULL_STRING);\r
- finalQuery.add(queryBuilder.newIdNotNullQuery("inDescription.taxon.id"), Occur.MUST);\r
-\r
-// String luceneQueryStr = String.format(luceneQueryTemplate.toString(), queryString);\r
+ finalQuery.add(queryFactory.newIdNotNullQuery("inDescription.taxon.id"), Occur.MUST);\r
\r
- // --- sort fields\r
SortField[] sortFields = new SortField[]{SortField.FIELD_SCORE, new SortField("inDescription.taxon.titleCache__sort", false)};\r
\r
- // ---- execute criteria\r
-\r
-\r
-// Query luceneQuery = luceneSearch.parse(luceneQueryStr);\r
TopDocs topDocsResultSet = luceneSearch.executeSearch(finalQuery, clazz, pageSize, pageNumber, sortFields);\r
\r
String[] highlightFields = null;\r
if(highlightFragments){\r
- highlightFields = freetextFields.toArray(new String[freetextFields.size()]);\r
+ highlightFields = queryFactory.getTextFieldNames().toArray(new String[queryFactory.getTextFieldNames().size()]);\r
}\r
\r
// initialize taxa, thighlight matches ....\r