Here is the FTS query I use on a bucket with 1000 documents. The query works fine, but sort returns very weird answers.
"indexName": "idx_listUsersSearch",
"query": {
"conjuncts": [
{
"term": "users",
"field": "docType"
},
{
"term": "users",
"field": "namespace"
}
]
},
"sort": [
{
"by": "field",
"field": "data.info.firstName",
"missing": "last"
}
],
"size": 5,
"from": 0
}
RESULT when limited to 5 :
Adriana
Corina
FirstName
Florin
Belinda
RESULT when limited to 10 :
Adriana
Corina
FirstName
Martina
Florin
Belinda
Meg
Reverse order and sorting by -data.info.firstName
generates the following results
Meg
Adriana
Belinda
Zhara
Xtina
Megan
…
you get the point.
I still can’t believe I’m spending time on sorting?!
How is this not solved???
Having a similar problem waiting for someone to guide me fix the issue
Thanks in advance.
abhinav
February 11, 2020, 7:58pm
4
@Gabriel_P1 would you mind sharing your index definition? The sorting of your field values depends on the tokens generated for your text - which is done by the analyzer. So what analyzer were you using? If you want to sort correctly on the first name, I’d recommend using the keyword
analyzer.
Also, just updating your field from “data.info.firstName” to “-data.info.firstName” isn’t the right way to reverse sort. You’d need to set {“desc”:true} within your sort object. So that’d look like this …
"sort": [
{
"by": "field",
"field": "data.info.firstName",
"missing": "last",
"desc": true
}
]
Optionally you could do this …
"sort": ["data.info.firstName"] // ascending
..
"sort": ["-data.info.firstName"] // descending
Documentation on sorting … Sorting Query Results | Couchbase Docs
Still waiting for someone to help me resolve my issue? vlc 9apps
Fujing
July 29, 2021, 1:10pm
6
Any updates about the sorting?
I could sort the results with a keyword analyzer, but the order is case sensitive, is there a way we can order it case insensitive?
@Fujing you should try setting up a custom analyzer with the following components to accommodate your situation …
single tokenizer
to_lower token filter
p.s. The keyword analyzer just uses the single tokenizer.