Message Boards
How can search ddmFieldName correctly in 7.3
Alain Barrero, modified 3 Years ago.
How can search ddmFieldName correctly in 7.3
New Member Posts: 2 Join Date: 3/4/21 Recent PostsI´m trying to search in structure fields like this:
{ "ddmFieldName" : "ddm__keyword__36316__date_es_ES", "ddmValueFieldName" : "ddmFieldValueKeyword_es_ES", "ddmFieldValueKeyword_es_ES_String_sortable" : "2021-03-31", "ddmFieldValueKeyword_es_ES" : "2021-03-31" }, { "ddmFieldName" : "ddm__keyword__36316__revision_es_ES", "ddmValueFieldName" : "ddmFieldValueKeyword_es_ES", "ddmFieldValueKeyword_es_ES_String_sortable" : "true", "ddmFieldValueKeyword_es_ES" : "true" },
How it makes range search in date and exact term in revision?
Daniel Martínez Cisneros, modified 2 Years ago.
RE: How can search ddmFieldName correctly in 7.3
Junior Member Posts: 38 Join Date: 7/1/11 Recent PostsHi Alain,
with the new Search Api all the field asociated to a structure are saved in ddmFieldArray as an array, as described below:
"ddmFieldArray" : [
{
"ddmFieldName" : "ddm__keyword__38308__apellidos_en_US",
"ddmValueFieldName" : "ddmFieldValueKeyword_en_US",
"ddmFieldValueKeyword_en_US_String_sortable" : "gonzalez montero",
"ddmFieldValueKeyword_en_US" : "Gonzalez Montero"
},
{
"ddmFieldName" : "ddm__keyword__38308__empleado_en_US",
"ddmValueFieldName" : "ddmFieldValueKeyword_en_US",
"ddmFieldValueKeyword_en_US_String_sortable" : "101334",
"ddmFieldValueKeyword_en_US" : "101334"
},
{
"ddmFieldName" : "ddm__keyword__38308__nombre_en_US",
"ddmValueFieldName" : "ddmFieldValueKeyword_en_US",
"ddmFieldValueKeyword_en_US_String_sortable" : "laura",
"ddmFieldValueKeyword_en_US" : "Laura"
}
],
For filter some of its values you have to use NestedQuery and add your DateRangeTermQuery to nested:
BooleanQuery booleanQueryEmp = queries.booleanQuery();
DateRangeTermQuery dateRangeTerm = queries.dateRangeTerm("ddmFieldArray.ddmFieldValueKeyword_es_ES",true,true,"timestampFrom", "timestampTo");
booleanQueryEmp.addMustQueryClauses(dateRangeTerm);
NestedQuery nestedQuery = queries.nested("ddmFieldArray", booleanQueryEmp);
And finally add nested query to the global booleanQuery prior to build the query:
booleanQuery.addMustQueryClauses(titleQuery, classNameQuery, lastContentQuery, ddmStructureKeyQuery, nestedQuery);
Have a look into this link:
- https://help.liferay.com/hc/es/articles/360029046411-Building-Search-Queries-and-Filters#example
- https://github.com/liferay/liferay-portal/blob/7.2.x/modules/apps/portal-search/portal-search-api/src/main/java/com/liferay/portal/search/query/Queries.java
Hope this helps