In this article
Milvus Text Match defaults to any-term matching, so a multiword string does not by itself require every term or preserve phrase order.
Milvus TEXT_MATCH filters documents by analyzed terms, while a BM25 Function supplies a ranked full-text retrieval path. Choosing between them depends on whether the task needs a lexical eligibility condition or a relevance ordering; the shared presence of an analyzer does not make those operations equivalent.
Read the predicate’s actual semantics
The official Text Match documentation describes a boolean expression over a match-enabled field. The current default matches any of the supplied analyzed terms. Do not assume that a phrase containing several words requires all of them or preserves their order. Inspect the documented expression semantics before using it as a mandatory technical condition, especially when similar terms occur across unrelated product descriptions.
Separate ranking from eligibility
The full-text search guide describes the BM25 Function route. Ranked retrieval can order documents by lexical relevance, while a predicate determines whether a record is eligible. A boolean match does not itself provide the same BM25 ordering. Conversely, a strong BM25 score does not establish that a document satisfies every business or product constraint. Keep these responsibilities separate in query design and evaluation.
Test a multi-term equipment query
Use documents about a sensor cable, a power cable and a sensor enclosure. Ask for the sensor cable and compare predicate eligibility with BM25 ranking. Under any-term matching, records containing only one term can remain eligible. This fixture reveals why a caller cannot infer conjunction from a multiword input string. Review the actual tokens and configured matching behavior rather than explaining every broad result as poor embedding quality.
| Requirement | Appropriate responsibility |
|---|---|
| Record contains an allowed analyzed term | Text-match predicate |
| Order lexical candidates by relevance | BM25 retrieval |
| Restrict product revision | Explicit metadata condition |
| Preserve phrase relationships | A documented phrase-aware mechanism |
Treat the analyzer as schema
The analyzer overview explains tokenization and filtering. The same visible string can produce different searchable tokens under different analyzers. Inspect language handling, punctuation and technical identifiers before building the collection. Current Text Match documentation notes that analyzer settings are fixed for the collection once defined, so a new policy needs a deliberate migration rather than an assumption that changing a client argument rewrites existing indexed terms.
Validate both candidate membership and order
Keep separate assertions for which documents pass the predicate and how ranked results are ordered. Include near-matching products and identifier punctuation in the fixture. Preserve collection schema and analyzer configuration with the query. This allows a broad-match defect, a ranking defect and an applicability defect to be diagnosed independently, without presenting a term filter as a full-text ranking system or expecting a relevance score to enforce every required constraint.
Related reading: A local RAG server: placing components around the GPU; Evaluating embeddings for Russian language retrieval.