Comments (6)
Hi @cvija1
Multiple field sorting is indeed not available with ft.search.
The processing pipeline complexity of FT.AGGREGATE can indeed impact query execution duration.
However, without the ability to perform multiple field sorting in FT.SEARCH, it's not possible to fairly compare between FT.SEARCH and FT.AGGREGATE.
To assist you better, please provide more details about your index schema and perhaps an example query. With this information, we can explore alternative approaches to enhance the query performance based on your specific requirements.
from redisearch.
Hi @meiravgri
I have simple index
FT.CREATE vodIndex ON JSON PREFIX 1 content:vod: SCHEMA $.vodContentId AS vodContentId NUMERIC SORTABLE
I try these two commands
FT.SEARCH vodIndex * SORTBY vodContentId limit 0 0
and
FT.AGGREGATE vodIndex * LOAD * SORTBY 1 @vodContentId limit 0 0
It seems similar query but response time for FT.SEARCH is about 60ms but for FT.AGGREGATE is something about 250ms. I have about 12k documents.
from redisearch.
Hi,
when you run a query withlimit 0 0
, all it does is to return the number of results.
This makes the sorter meaningless (since we only count the results and do not sort them).
However, when using FT.AGGREGATE with LOAD
before the SORT, you also add the overhead of loading the document from redis keyspace, which is a heavy operation.
try:
- remove the limit (the default limit is 10 results)
- moving the LOAD after the sort
FT.AGGREGATE vodIndex * SORTBY 1 @vodContentId LOAD *
from redisearch.
Hi,
I used these two example queries only for test response time. Query that I use in my application is more complex than these. Because of that, first suggestion is meaningless, but I will try second suggestion and send you results.
from redisearch.
Hi @meiravgri,
putting LOAD after sort resolved my performance problem, but I think that you should mention that in official documentation. Also, it should return error if LOAD is before sort. However, in official documentation for FT.AGGREGATE, LOAD is above SORT.
Thank you
from redisearch.
As i said, these 2 queries are not equal, therefore, they can't be used to compare these two commands' performance.
LOAD before SORT is a valid use case, where you want to load document values in order to sort by them.
from redisearch.
Related Issues (20)
- [BUG] Is There a offset limit when using `limit offset num` HOT 3
- [BUG] Redis Search silently fails to Sort when the index schema is too large HOT 6
- [BUG] ft.aggregate slowdown with high frequency updates HOT 3
- [BUG] Wildcard redisearch on TEXT field does not return result HOT 2
- [BUG] Unable to do full-text exact search with a colon in the text HOT 2
- [BUG] simple ft.create/ft.search with <100 bytes of data is leaking 1300 bytes of memory. HOT 3
- [BUG] Order of precedence not honored in APPLY functions with exponents HOT 1
- MOD-7133: [Feature Request] Add FT.ALIASGET command HOT 2
- L2 distance computation misunderstanding in documentation HOT 4
- [BUG] I can't run "make build" command successfully HOT 3
- Document Distributed Search (RSCoordinator) build/installation HOT 7
- Boost File Error when building 2.8.13 with Bullseye HOT 1
- [BUG] RediSearch HNSW indexing deadlock? HOT 2
- Facing build issue on PPC64LE architecture. HOT 3
- [BUG] APPLY substr function not using -1 count as documented - [MOD-6959]
- the results obtained after indexing are incomplete HOT 29
- Please Help Fix RSCoordinator So that Redis Search (RediSearch) Can Be Used Across Redis Cluster - module-oss.so initialization failed HOT 17
- Configuration of Custom Tokenizer HOT 1
- [BUG] Redis freezes and stops responding with 100% CPU Utilization while using redissearch with HNSW vector indexes HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from redisearch.