Skip to content

NotEquals (!$eq) operator does not work #280

@superpowered

Description

@superpowered

The Not Equals operator either does not function as intended, or is documented incorrectly.
https://github.com/yext/search-core/blob/master/docs/search-core.matcher.md

Using the !$eq operator in any filter results in the following error:

"code": 9413,
"type": "FATAL ERROR", 
"message": "Invalid parameter: The following operator in the filters parameter is invalid: key !$eq, value: \"test\""`,
"name": ANSWERS_PARAMETER_INVALID

The Matcher enum has a remark that this value should be compatible with all field types.

/**
* A not equals comparison
* 
* @remarks
* Compatible with all field types.
*/
NotEquals = "!$eq",

Some example queries that do not work (throw the above error):

filters: {
  "c_something": {"!$eq": "test"}
}
filters: {
  "c_something": {"!$eq": 1}
}
filters: {
  "c_something": {"!$eq": true}
}

Some example queries that do work (do not throw the above error):

filters: {
  "c_something": {"$eq": "test"}
}
filters: {
  "c_something": {"$eq": 1}
}
filters: {
  "c_something": {"$eq": true}
}

an example using 'seach-headless-react':
Fails:

const test = {
  selected: true,
  filter: {
    kind: "fieldValue",
    fieldId: 'c_something',
    value: 'test',
    matcher: Matcher.NotEquals,
  }
}
searchActions.setStaticFilters([test]);

Works:

const test = {
  selected: true,
  filter: {
    kind: "fieldValue",
    fieldId: 'c_something',
    value: 'test',
    matcher: Matcher.Equals,
  }
}
searchActions.setStaticFilters([test]);

I also attempted a few other matchers to see if maybe it was incorrect in the TS api, but they also do not seem to work: $neq, $!eq

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions