gab gab
07/31/2026, 11:36 AMalimentation, alimentation/*]
→ found: 60
The equivalent exact filter on our denormalized label field returns 167:
categories.fr-CH.lvl0:=Alimentation
→ found: 167
Faceting the truncated result shows exactly what happened — only 4 paths actually drove the match:
24 alimentation/autres-produits/superaliments
16 alimentation/autres-produits/condiments/miso
13 alimentation/fruits-baies-et-noix/produits-de-fruits/fruits-secs
7 alimentation/miel
--- 60 = found
Things that do not help:
• max_candidates (tried up to 10000) — seems to apply only to q, not filter_by
• exhaustive_search=true
Questions
1. Is this 4-value cap on prefix expansion in filter_by intended / documented?
2. Is there a way to raise it for filter_by (a max_candidates equivalent)?
3. If not, what's the recommended way to filter "category + descendants" over a string[] of paths? Enumerating every descendant value in :[...] works, but requires a separate facet query first.
Thanks!Aadarsh
08/04/2026, 7:58 AMbrands collection first and then othersRohan Bin Khokon
08/06/2026, 10:35 AMMatthew
08/07/2026, 2:05 PMindex: false.
But I think the intended meaning is: Either do not mention the fields in the schema, or add them to the schema with index: false.
In other words, are both of these valid ways to make a field unindexed and stored only on disk?Rick Tham
08/09/2026, 8:04 PMtypesense/typesense The ARM64 image from Docker Hub works perfectly on the same machines, suggesting I may be missing something in my build process rather than a general ARM issue.
Before I go too far down the rabbit hole, I was curious if anyone could point me toward how the official ARM64 images are produced. Are they built directly from the public repo with Bazel, or is there a different toolchain, configuration, compiler version, build flags, or CI pipeline involved?
I'm mainly trying to learn the supported build path for both AMD64 and ARM64, and would appreciate any guidance from folks who have worked with the build system.
Thanks in advance!Peter Matulis
08/10/2026, 4:17 AMKuba
08/11/2026, 5:07 PMLeon Wolf
08/13/2026, 4:14 PMparent.{a && b}) and hoping someone can tell me whether it's usable at all.
I'm testing with 50k docs, items is an object[] of {code, value}, items.code is string[] faceted, items.value is int32[] with range_index. On 31.0.rc12:
• items.{code:=DE && value:>=20} → 1400ms (9,693 matches)
• items.code:=DE alone → 6ms
• items.value:>=20 alone → 11ms (47,540 matches)
Each condition is fine on its own, only the same-element form is scaling terribly: 4.5s once documents are ~15kb, and 6s for a code that appears in half the collection.
I also commented on github.com/typesense/typesense/issues/2469#… with a reproduction script.
Is there a way to make this work at this size, or is a fix planned? It's the only way to express "one array element matches both conditions".Akash Kumar
08/14/2026, 12:01 PMbookType value results in fewer search results.
For the search query `"sudha murthy"`:
Filter 1:
isOutOfStock:N && bookType:[0,3,2]
Returns 12 results.
Filter 2:
isOutOfStock:N && bookType:[0,3]
Returns 18 results.
Since [0,2] is a subset of [0,3,2], we expected the first query to return at least the same number of results as the second query.
Could you please help us understand why the broader filter is returning fewer results?
curl --location '<https://ew5h2tr67livkp41p-1.a1.typesense.net/multi_search?use_cache=true&x-typesense-api-key=ynYXfz3KuyLdSvLrMitLZWtsOImkATlb>' \
--header 'Content-Type: application/json' \
--data '{
"searches": [
{
"q": "sudha murthy",
"query_by": "isbn,title,author,publication,category,subject,categories.lvl0,categories.lvl1,categories.lvl2,categories.lvl3,categories.lvl4",
"prioritize_token_position": true,
"max_facet_values": 50,
"num_typos": 2,
"min_len_1typo": 2,
"split_join_tokens": "always",
"typo_tokens_threshold": 10,
"per_page": 32,
"filter_by": "isOutOfStock:N && bookType:[0,3,2]",
"sort_by": "num_is_out_of_stack:asc,ranking:desc,_text_match:desc",
"pre_segmented_query": true,
"drop_tokens_threshold": 10,
"facet_sample_threshold": 1000,
"facet_sample_percent": 20,
"use_cache": true,
"exclude_fields": "embedding",
"highlight_full_fields": "isbn,title,author,publication,category,subject,categories.lvl0,categories.lvl1,categories.lvl2,categories.lvl3,categories.lvl4",
"collection": "books_collection",
"facet_by": "agedGroup,author,binding,bookCondition,categories.lvl0,isOutOfStock,language,price,publication",
"page": 1
}
]
}'Nikhil Agarwal
08/17/2026, 2:57 PMrhythm.goyal
08/18/2026, 9:03 AMfilter_by together with remove_matched_tokens: true. Some rules work correctly, while other rules with the same configuration shape don't appear to fire.
Working examples:
• script, display, slab, grotesk
• sonakshi → is_var:=true → 406 expected results
Not working:
• blackletter → font_cat_en:="blackletter" → expected ~358, getting ~18 normal name matches
• scary → tags_font_en:="horror" → expected ~126, getting normal name matches
• variable → is_var:=true → expected 406, getting ~332 name matches
We also tested replace_query instead of remove_matched_tokens, with the same behavior.
Is there anything in tokenization/query processing that could cause certain query strings not to trigger an otherwise identical curation rule?dd
08/18/2026, 2:48 PMsaurabh.pokhriyal
08/19/2026, 7:27 AMmax_per_page value to 1000, but we are still getting an error saying that only up to 250 hits can be fetched per page. Can anyone help with this?
Error:
Request failed with HTTP code 422 | Server said: Only up to 250 hits can be fetched per page.Hemanth Ram
08/20/2026, 4:59 AMKuba
08/20/2026, 1:33 PM.export method on JS client and we noticed that in one of our runs (preceeded with a lot of upserts and deletes to the TS collection done through Sequin CDC), exporting the collection + JSON parsing it shortly after crashed our code.
Typesense export returned a non-JSON line: Error while getting seq_id of `63378`: Not found.
const exportedDocuments = await client
.collections(collection)
.documents()
.export({ include_fields: TS_INCLUDED_FIELDS });
const tsDocuments = exportedDocuments
.split('\n')
.filter((line) => line.trim().length > 0)
.map((line) => JSON.parse(line) as { id: string; key: string });
I think it could be due to the Sequin applying all buffered changes (deletes in this case) while export was ongoing, but a confirmation would nice. Is this the only error one can run into with export API? I find that this feature is a bit underdocumented: typesense.org/docs/30.2/api/documents.html#…Scott Nei
08/21/2026, 7:47 PMJon Liauw
08/22/2026, 1:07 AMKyriakos Akriotis
08/26/2026, 7:19 AMAngel Custodio Marmol Planelles
08/26/2026, 9:00 AM{
"name": "repro_nested_string_array",
"enable_nested_fields": true,
"fields": [
{
"name": "title",
"type": "string"
},
{
"name": "items",
"type": "object[]"
},
{
"name": "items.supplierId",
"type": "string[]",
"facet": true
},
{
"name": "items.centerList",
"type": "string[]",
"facet": true
}
]
}
Document
{
"id": "doc1",
"title": "M26192-UN",
"items": [
{
"supplierId": "4000012571",
"centerList": [
"ES081151"
]
}
]
}
Query
filter_by=items.{supplierId:=4000012571 && centerList:=ES081151}
The query does not return a response and times out, even though the collection contains only one document.
The issue appears to be specifically related to using a grouped nested filter with an object[] field where one of the nested fields is itself a string[].
Could you please confirm whether this is a known issue or limitation in Typesense 30.2, and whether it has been fixed in a newer version?Gauthier PLM
09/01/2026, 10:49 AMLionel Ovaert
09/03/2026, 8:33 AMdescription_embedding.). This field already existed in the original schema and when I list the existing schema, it is also present. Any idea what could cause this ?Luka
09/14/2026, 9:19 AMgenerate_schema_prompt() caps facet values at 20 fetched / 10 shown, ordered by frequency, so on a 23-value field the 13 rarest never reach the LLM. The model doesn't abstain when a value is hidden, it filters on the nearest visible one instead, which silently returns a large and wrong result set rather than an error. Listing values in system_prompt fixes it, but doesn't scale to hierarchy levels with ~400 values. Is there a runtime way to raise those caps, or is #2954 on the roadmap?
My company has been using typesense for over a year and we use it to store most of our website data 🙂Muhammad Adnan Bashir
09/14/2026, 7:30 PMAnimesh Guchhait
09/16/2026, 9:42 AMEd
09/18/2026, 3:20 AMEd
09/18/2026, 3:21 AMEd
09/18/2026, 3:21 AMHemanth Ram
09/18/2026, 10:03 AMKevin Donovan
09/18/2026, 3:16 PME20260918 17:00:15.390157 7786 store.h:68] Error while initializing store: IO error: While lock file: /var/lib/typesense/meta/LOCK: Resource temporarily unavailable
E20260918 17:00:15.390187 7786 store.h:70] It seems like the data directory /var/lib/typesense/meta is already being used by another Typesense server.
E20260918 17:00:15.390203 7786 store.h:72] If you are SURE that this is not the case, delete the LOCK file in the data db directory and try again.
This happens when either typesense-server-0.25.0-amd64.deb or typesense-server-30.2-amd64.deb is installed.
Deleting the LOCK file has no effect.
I performed all these operations while logged in as root.
Would anyone have an idea why this is happening?
The command that I use to start the typesense server is
/usr/bin/./typesense-server --config=/etc/typesense/typesense-server.ini
Any help much appreciated.
Thank you!rafiqul.abprs
09/18/2026, 7:15 PMHi team 👋 We hit what looks like a serious geopolygon performance regression and
filed it with full analysis + repro: <https://github.com/typesense/typesense/issues/3056>
Short version: point-in-polygon filter (filter_by=geom:(lat,lon) on a geopolygon
field) went from ~1-2ms on v28.0 to ~430-500ms on v30.1 with identical data
(~3M docs, one bbox geopolygon per doc). The cost scales linearly with the number
of geopolygon docs and is independent of the query point — it looks like every
query evaluates the whole polygon index since the v29.0 s2regiontermindexer
refactor (PR #2300). Text search and geopoint radius filters are unaffected.
Our production reverse-geocoding runs on 30.1 (Kubernetes, can't downgrade), so
we're really feeling this one. Would appreciate any pointer on:
• whether this is known / already being tracked
• any workaround or config that restores v28-level geo polygon latency on 30.x
Happy to help test a fix or share more profiling data. Thanks! 🙏