{"record":{"id":"50239eb71531e07c","repo":"weaviate/weaviate","slug":"invalid-combination-of-properties","errorCode":null,"errorMessage":"invalid combination of properties","messagePattern":"invalid combination of properties","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"modules/text2vec-contextionary/vectorizer/schema_config.go","lineNumber":70,"sourceCode":"\terr := cv.validateClassName(ctx, class.Class, icheck.VectorizeClassName())\n\tif err != nil {\n\t\treturn fmt.Errorf(\"invalid class name: %w\", err)\n\t}\n\n\tfor _, prop := range class.Properties {\n\t\tif !icheck.PropertyIndexed(prop.Name) {\n\t\t\tcontinue\n\t\t}\n\n\t\terr = cv.validatePropertyName(ctx, prop.Name,\n\t\t\ticheck.VectorizePropertyName(prop.Name))\n\t\tif err != nil {\n\t\t\treturn errors.Wrapf(err, \"class %q: invalid property name\", class.Class)\n\t\t}\n\t}\n\n\tif err := cv.validateIndexState(ctx, class, icheck); err != nil {\n\t\treturn errors.Wrap(err, \"invalid combination of properties\")\n\t}\n\n\tcv.checkForPossibilityOfDuplicateVectors(ctx, class, icheck)\n\n\treturn nil\n}\n\nfunc (cv *ConfigValidator) validateClassName(ctx context.Context, className string,\n\tvectorizeClass bool,\n) error {\n\t// class name\n\tif !vectorizeClass {\n\t\t// if the user chooses not to vectorize the class, we don't need to check\n\t\t// if its c11y-valid or not\n\t\treturn nil\n\t}\n\n\tcamelParts := camelcase.Split(className)","sourceCodeStart":52,"sourceCodeEnd":88,"githubUrl":"https://github.com/weaviate/weaviate/blob/75aa4b6d11f8818305aafd4440b4e32794f7ca04/modules/text2vec-contextionary/vectorizer/schema_config.go#L52-L88","documentation":"Wrapped error from ConfigValidator.Do (modules/text2vec-contextionary/vectorizer/schema_config.go:70). If validateIndexState fails, the error is wrapped as 'invalid combination of properties'. validateIndexState requires that either the class name is vectorized, or at least one indexed property of type text/text[] exists — otherwise no vector position could ever be computed, so the schema is rejected.","triggerScenarios":"Creating a class with vectorizeClassName:false (or the name being skipped) where no property is both indexed and text-like — e.g. all props are int/number/bool, or the only text props have indexFilterable/skipped indexing, or properties lack datatypes.","commonSituations":"Users vectorizing metadata-only classes (numbers, dates) with text2vec-contextionary; excluding every text property from indexing; forgetting 'vectorizeClassName': true on a class with no text props.","solutions":["Set \"vectorizeClassName\": true in the module config if the class name is contextionary-valid","Add at least one property of type text or text[] that is indexed and skipVectorization not set","Use a different vectorizer suited to non-text data (e.g. multi2vec or img2vec)","Check the wrapped inner error (property datatype or 'invalid properties...' message) for the exact failing condition"],"exampleFix":"// before: no vectorizable input\n{\"class\":\"Metrics\",\"moduleConfig\":{\"text2vec-contextionary\":{\"vectorizeClassName\":false}}}\n// after\n{\"class\":\"Metrics\",\"moduleConfig\":{\"text2vec-contextionary\":{\"vectorizeClassName\":true}}}\n","handlingStrategy":"validation","validationCode":"hasText := false\nfor _, p := range class.Properties {\n\tif len(p.DataType) > 0 && (p.DataType[0] == \"text\" || p.DataType[0] == \"text[]\") && p.Indexed() {\n\t\thasText = true\n\t}\n}\nif !hasText && !vectorizeClassName {\n\treturn errors.New(\"need vectorizeClassName:true or at least one indexed text property\")\n}","typeGuard":null,"tryCatchPattern":"_, err := client.Schema.ClassCreator().WithClass(class).Do(ctx)\nif err != nil && strings.Contains(err.Error(), \"invalid combination of properties\") {\n\t// enable vectorizeClassName or add an indexed text property, then retry\n}","preventionTips":["Every vectorized class should have at least one indexed text/text[] property","Use a non-text vectorizer (multi2vec etc.) for numeric/image-only classes","Validate schemas against the module config in CI before deploying"],"tags":["schema-validation","vectorizer","weaviate","configuration"],"backgroundTag":"schema-validation-failed","analyzedSha":"75aa4b6d11f8818305aafd4440b4e32794f7ca04","analyzedAt":"2026-09-04T14:58:20.392Z","contentChangedAt":"2026-09-04T14:58:20.392Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}