[
https://issues.apache.org/jira/browse/UNOMI-585?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kevan Jahanshahi updated UNOMI-585:
-----------------------------------
Summary: Use nested mapping for profile.properties.interests and create
NestedCondition type (was: Use nested mapping for profile.properties.interests)
> Use nested mapping for profile.properties.interests and create
> NestedCondition type
> -----------------------------------------------------------------------------------
>
> Key: UNOMI-585
> URL: https://issues.apache.org/jira/browse/UNOMI-585
> Project: Apache Unomi
> Issue Type: New Feature
> Affects Versions: 2.0.0
> Reporter: Kevan Jahanshahi
> Priority: Major
> Fix For: 2.0.0
>
>
> We cannot use flattened indexation on profile interests due to the queries
> requirement like range queries to be able to get profiles having interests <
> or > to a certain value.
> So the last option we have to avoid mapping explosion is to index them as
> nested object like this:
> {code:java}
> "interests": [{
> "key": "cars",
> "value": 15
> }, {
> "key": "football",
> "value": 45
> }] {code}
> For that we also need new ConditionType in Unomi, something that look like
> the BooleanConditionType:
> {*}NestedConditionType{*}: would be perfect
> Parameters:
> * {*}path{*}: the path of the nested property
> * {*}condition{*}: the nested query to be applied on the nested property
> So we could build up condition like this:
> {code:java}
> {
> "type": "nestedCondition",
> "parameterValues": {
> "path": "properties.interests",
> "subCondition": {
> "type": "booleanCondition",
> "parameterValues":{
> "operator": "and",
> "subConditions": [{
> "type": "propertyCondition",
> "parameterValues": {
> "propertyName": "properties.interests.key",
> "propertyValueInteger": "cars",
> "comparisonOperator": "equals"
> }
> },{
> "type": "propertyCondition",
> "parameterValues": {
> "propertyName": "properties.interests.value",
> "propertyValueInteger": 15,
> "comparisonOperator": "greaterThan"
> }
> }]
> }
> }
> }
> } {code}
> Also the this would required two new java classes dedicated for that purpose:
> *NestedConditionESQueryBuilder* and {*}NestedConditionEvaluator{*}.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)