Team FlutterflowDevs
09/23/2025, 12:23 PMAshok Kumar
09/23/2025, 1:38 PM{
"searches": [
{
"collection": "t",
"q": "*",
"query_by": "pid",
"group_by": "pid",
"page": 1,
"per_page": 100
}
]
}
{
"results": [
{
"facet_counts": [],
"found": 2,
"found_docs": 4,
"grouped_hits": [
{
"found": 2,
"group_key": [
"2"
],
"hits": [
{
"document": {
"id": "3",
"pid": "2",
"price": 21
},
"highlight": {},
"highlights": []
},
{
"document": {
"id": "2",
"pid": "2",
"price": 20
},
"highlight": {},
"highlights": []
}
]
},
{
"found": 2,
"group_key": [
"1"
],
"hits": [
{
"document": {
"id": "1",
"pid": "1",
"price": 11
},
"highlight": {},
"highlights": []
},
{
"document": {
"id": "0",
"pid": "1",
"price": 10
},
"highlight": {},
"highlights": []
}
]
}
],
"out_of": 4,
"page": 1,
"request_params": {
"collection_name": "t",
"first_q": "*",
"per_page": 100,
"q": "*"
},
"search_cutoff": false,
"search_time_ms": 3
}
]
}
Shiva Dixith
09/23/2025, 7:28 PMPhillip Young
09/23/2025, 8:01 PM"embed": {
"from": [
"product_name",
"categories"
],
The docs state that it will concatenate the product_name and categories field, so for example, if the name was "awesome name" and the category was "awesome category", it would create an embedding based on "awesome name awesome category".
I'm wondering if it's possible to create an embedding on something like: "name: awesome name, category: awesome category" so that there is more information given.
"awesome name awesome category" vs "name: awesome name, category: awesome category"
From the docs, there is an "indexing_prefix" that can be used, but that is only attached to the beginning of the text and can't be done per-field.
Is there a way to add prefixes per-field (and maybe field dependent) for auto-embedding multiple fields?
Edit: One work-around that I'm thinking of is creating an extra string field that is just the whole text I want to embed, and then matching the image-search docs, doing "store": false.
the textToEmbed would then be "name: awesome name, category: awesome category"
{
"name": "textToEmbed",
"type": "string",
"store": false
},
{
"name": "embedding",
"type": "float[]",
"embed": {
"from": [
"textToEmbed"
],
"model_config": {
"model_name": "something"
}
}
}
Thanks!Sharnam Singhwal
09/24/2025, 7:04 AMUrvis
09/24/2025, 7:39 AMThomas Reither
09/24/2025, 4:10 PMvaibhav jindal
09/24/2025, 7:56 PMJesper Møjbæk
09/25/2025, 5:58 AMHenrik Sjödahl
09/25/2025, 12:40 PM{
"name": "products",
"fields": [
{"name": "keywords", "type": "string[]" },
]
}
{"id": "one", "keywords": ["milk"]}
{"id": "two", "keywords": ["milk", "milk"]}
{"id": "three", "keywords": ["milk", "milk", "milk"]}
{
"collection": "products",
"q": "milk",
"query_by": "keywords"
}
Paul Wallnöfer
09/25/2025, 3:02 PMoptional:true
. Does this affect the memory usage or is this a stupid thing to ask?Jonathan Zylberberg
09/25/2025, 7:42 PMAhamed Asif
09/26/2025, 6:26 AMTristan Bagnulo
09/26/2025, 5:49 PMquery_by
that I wanted to share and get your insights on.
Issue:
When searching for "fighting", I was getting 0 results despite having documents containing that exact word in the title
field.
Root Cause Found:
The position of fields in the query_by
parameter significantly affects search results. Here's what I discovered:
❌ This returned 0 results:
query_by:doc_id,doc_type,category_a,category_b,category_c,title,summary,description,tags,keywords,..."
✅ This returned 1 result (correct):
query_by: "title,summary,description,tags,keywords,category_a,category_b,category_c,doc_id,doc_type,..."
Setup:
• Using Typesense with Natural Language search (nl_query: true
)
• Collection has ~3,250 documentsSame query, same parameters, only query_by
field order changed
• Tested with exhaustive_search: true
- didn't fix the issue
Debug Evidence:
With working field order, text_match_info
shows:
{
"best_field_weight": 15,
"fields_matched": 1,
"best_field_score": "1108091338752"
}
Questions:
1. Is this expected behavior? Should field position in query_by
affect whether matches are found at all?
2. Does Typesense have any internal logic that stops searching after early fields in the list?
3. Are there best practices for field ordering in query_by
for optimal search results?
4. Could it be the case that if typesense doesn't get a result in the first few fields, it decides to give up? My queries had 16 fields in total.
Solution Implemented:
I reordered fields to put text-rich content fields first, categorical/ID fields last. This fixed the search completeness issue.
Would love to understand the underlying mechanism better! Is this documented behavior or something worth investigating further?John
09/27/2025, 8:35 AMIsaiah Joshua Samonte
09/27/2025, 11:38 PMDave
09/29/2025, 9:45 AMHenrik Sjödahl
09/29/2025, 12:04 PMHung-wei Chuang
09/29/2025, 10:00 PM"filter_by": "series_keywords:[hockey,football]",
"group_by": "series_keywords",
however, because football is more popular than hockey, this query returns 50 results of just football (the sort criteria is by popularity score)
is it possibly to apply some kind of faceting/grouping for each filter clause such that i can get some results for each term?
or is the best way to do this to do a multi-search on each keyword individually? (is there a limit on this? what are the performance considerations)Ahamed Asif
09/30/2025, 4:52 AMChristopher Lindblom
09/30/2025, 11:29 AMJonatan Jall Jahja
09/30/2025, 1:08 PMAntoineLF
09/30/2025, 3:39 PM{
"index": true,
"name": "embedding",
"optional": false,
"sort": false,
"store": false,
"type": "float[]",
"num_dim": 1536
}
Matheus Bombonato
10/01/2025, 1:03 AMFail importing documents: [{\"code\":429,\"embedding_error\":{\"error\":\"API error: Requests to the Embeddings_Create Operation under Azure OpenAI API version 2023-05-15 have exceeded call rate limit of your current OpenAI S0 pricing tier. Please retry after 1 second. Please go here: <https://aka.ms/oai/quotaincrease> if you would like to further increase the default rate limit. For Free Account customers, upgrade to Pay as you Go here: <https://aka.ms/429TrialUpgrade>.
Ashley Hindle
10/01/2025, 7:36 AMupdateOrCreate
but it doesn't find the document that has that exact string in
The string in the docs is Flight::updateOrCreate(
so I added :
and (
as token separators, but it still didn't find it. If I separate it to update or create
it finds it but it's lower down the relevance than updateOrInsert
, and this 'camel case separation' makes a different search for shouldRegister
return less relevant results because 'register' is in a lot of places 😅
How can I make typesense indexing/retrieval work with method names like this? It's an exact match so it feels like I shouldn't be having problems, I'm half-tempted to query my local DB first using where content like '%updateOrCreate%
then force those results in or something 😬Henrik Sjödahl
10/01/2025, 9:32 AMField "foo.unindexed_field" must be an int64.
### Run Typesense via Docker ########################################
set -x
export TYPESENSE_API_KEY=xyz
export TYPESENSE_HOST=<http://localhost:8108>
docker stop typesense-repro 2>/dev/null
docker rm typesense-repro 2>/dev/null
rm -rf "$(pwd)"/typesense-data-dir-repro
mkdir "$(pwd)"/typesense-data-dir-repro
# Wait for Typesense to be ready
docker run -d -p 8108:8108 --name typesense-repro \
-v"$(pwd)"/typesense-data-dir-repro:/data \
typesense/typesense:29.0 \
--data-dir /data \
--api-key=$TYPESENSE_API_KEY \
--enable-cors
# Wait till typesense is ready.
until curl -s -o /dev/null -w "%{http_code}" "$TYPESENSE_HOST/health" -H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" | grep -q "200"; do
sleep 2
done
curl -s "$TYPESENSE_HOST/debug" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" | jq
curl -s "$TYPESENSE_HOST/collections" \
-X POST \
-H "Content-Type: application/json" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" \
-d '
{
"name": "companies",
"fields": [
{"name": "company_name", "type": "string" },
{"name": "foo", "type": "object" },
{"name": "foo.field", "type": "float" }
],
"enable_nested_fields": true
}' | jq
curl -s "$TYPESENSE_HOST/collections/companies/documents/import?action=create" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" \
-H "Content-Type: text/plain" \
-X POST \
-d '{"id": "124", "company_name": "Stark Industries", "foo": {"field": 123, "unindexed_field": 123}}
{"id": "125", "company_name": "Acme Corp", "foo": {"field": 123.45, "unindexed_field": 123.45}}' | jq
docker stop typesense-repro
docker rm typesense-repro
### Documentation ######################################################################################
# Visit the API reference section: <https://typesense.org/docs/28.0/api/collections.html>
# Click on the "Shell" tab under each API resource's docs, to get shell commands for other API endpoints
Wahid Bawa
10/01/2025, 3:33 PMW20251001 15:21:35.520613 2237 snapshot.cpp:224] Snapshot file exist but meta not found so delete it, path: /opt/typesense/data/state/snapshot/temp/db_snapshot
Deleting the snapshot and restarting the typesense service fixes this, but we're not sure why it happens in the first place.
We don't start our nodes with any snapshot, we depend on the nodes to update the collections.
Any reason why this could be happening? We've also seen this same behaviour recently with V26 clusters as well. Thanks!Diego Chacón Sanchiz
10/02/2025, 9:13 AMstate ERROR
and keeps printing warnings like:
W20251002 105711.889896 1336311 node.cpp:2366] node default_group172.27.48.138107:443 is not in active state current_term 202 state ERROR
E20251002 105711.890146 1336298 collection.cpp:740] Update to disk failed. Will restore old document
We already checked the disk usage (64% full)
What are the typical root causes of this type of error? What can cause it?
(Corrupted collection files? Interrupted snapshot installation? RocksDB inconsistency?)
What is the recommended recovery procedure in this case?
Any guidance or best practices would be appreciated!!Gorkem Baris Yesiltas
10/02/2025, 12:34 PMendDate
field (sortable). I’m trying to use the pivot sort feature with endDate(pivot:1728386250):asc
but I’m getting the error:
RequestMalformed: Request failed with HTTP code 400 | Server said: Bad syntax for sorting field `endDate`
we’re using the typesense js package version 2.1.0
here’s the config of the endDate
field:
{
"facet": true,
"index": true,
"infix": false,
"locale": "",
"name": "endDate",
"optional": false,
"sort": true,
"stem": false,
"stem_dictionary": "",
"store": true,
"type": "int64"
},
Chandar Venkata Rama
10/03/2025, 2:26 PM{ "searches":[ { "q":"Acrylic polymer countertop", "limit":50, "collection": "resource", "query_by":"name", "sort_by":"", "page":1, "num_typos":0, } ] }
this returns total rows as 2 and when i add additional filters instead of reducing the count, the total count is increasing for
eg :
{ "searches":[ { "q":"Acrylic polymer countertop", "limit":50, "collection": "resource", "query_by":"name", "filter_by":manufacturer:=[abcd] "sort_by":"", "page":1, "num_typos":0, } ] }
Should i add exhaustive_search=true ? will this cause any memory issues