From 86e10c83a98bc6e36d23acecca5d7486e38b5605 Mon Sep 17 00:00:00 2001 From: robfrank Date: Fri, 20 Feb 2026 11:54:53 +0100 Subject: [PATCH 1/8] docs: add full-text index guide (analyzers, search functions, More Like This) Co-Authored-By: Claude Sonnet 4.6 --- .../core-concepts/full-text-index.adoc | 490 ++++++++++++++++++ 1 file changed, 490 insertions(+) create mode 100644 src/main/asciidoc/core-concepts/full-text-index.adoc diff --git a/src/main/asciidoc/core-concepts/full-text-index.adoc b/src/main/asciidoc/core-concepts/full-text-index.adoc new file mode 100644 index 00000000..2d78cc34 --- /dev/null +++ b/src/main/asciidoc/core-concepts/full-text-index.adoc @@ -0,0 +1,490 @@ +[[full-text-index]] +=== Full-Text Index +image:../images/edit.png[link="https://github.com/ArcadeData/arcadedb-docs/blob/main/src/main/asciidoc/core-concepts/full-text-index.adoc" float=right] + +ArcadeDB's full-text index is built on https://lucene.apache.org[Apache Lucene] and supports configurable analyzers, advanced Lucene query syntax, multi-property indexing, relevance scoring, and "More Like This" similarity search. + +[[full-text-index-create]] +==== Creating a Full-Text Index + +[source,sql] +---- +CREATE INDEX ON Article (content) FULL_TEXT +---- + +Multiple properties can be indexed together: + +[source,sql] +---- +CREATE INDEX ON Article (title, body) FULL_TEXT +---- + +[[full-text-index-analyzer]] +==== Configuring the Analyzer + +Pass a `METADATA` block to choose a Lucene analyzer: + +[source,sql] +---- +CREATE INDEX ON Article (content) FULL_TEXT + METADATA { + "analyzer": "org.apache.lucene.analysis.en.EnglishAnalyzer", + "allowLeadingWildcard": false, + "defaultOperator": "OR" + } +---- + +===== Metadata Options + +[%header,cols="2,1,2,4"] +|=== +| Option | Type | Default | Description + +| `analyzer` +| string +| `org.apache.lucene.analysis.standard.StandardAnalyzer` +| Lucene analyzer class used for both indexing and querying + +| `index_analyzer` +| string +| — +| Override analyzer used only at index time + +| `query_analyzer` +| string +| — +| Override analyzer used only at query time + +| `allowLeadingWildcard` +| boolean +| `false` +| Allow `*term` wildcard queries + +| `defaultOperator` +| `"OR"` \| `"AND"` +| `"OR"` +| Default operator between terms when none is specified + +| `_analyzer` +| string +| — +| Per-field analyzer override, e.g. `"title_analyzer"` +|=== + +===== Common Analyzers + +[%header,cols="3,3"] +|=== +| Analyzer Class | Description + +| `org.apache.lucene.analysis.standard.StandardAnalyzer` +| General-purpose tokenizer (default) + +| `org.apache.lucene.analysis.en.EnglishAnalyzer` +| English stemming and stop words + +| `org.apache.lucene.analysis.core.SimpleAnalyzer` +| Lowercase only, no stop words + +| `org.apache.lucene.analysis.core.WhitespaceAnalyzer` +| Split on whitespace only +|=== + +===== Per-Field Analyzers + +For multi-property indexes, each field can use a different analyzer: + +[source,sql] +---- +CREATE INDEX ON Article (title, body) FULL_TEXT + METADATA { + "analyzer": "org.apache.lucene.analysis.standard.StandardAnalyzer", + "title_analyzer": "org.apache.lucene.analysis.en.EnglishAnalyzer" + } +---- + +Here `title` uses the English analyzer while `body` falls back to the standard analyzer. + +[[full-text-index-searching]] +==== Searching + +[[search-index]] +===== SEARCH_INDEX() + +Searches a named full-text index using Lucene query syntax. + +[source,sql] +---- +SELECT * FROM Article +WHERE SEARCH_INDEX('Article[content]', 'java programming') +---- + +*Signature:* `SEARCH_INDEX(indexName, query)` + +[%header,cols="1,1,3"] +|=== +| Parameter | Type | Description + +| `indexName` +| string +| The full index name as shown in the schema, e.g. `Article[content]` + +| `query` +| string +| A Lucene query string +|=== + +[[search-fields]] +===== SEARCH_FIELDS() + +Finds the full-text index automatically from field names, without needing to know the index name. + +[source,sql] +---- +SELECT * FROM Article +WHERE SEARCH_FIELDS(['title', 'content'], 'database tutorial') +---- + +*Signature:* `SEARCH_FIELDS(fieldNames, query)` + +[%header,cols="1,1,3"] +|=== +| Parameter | Type | Description + +| `fieldNames` +| array of strings +| Fields to search; a full-text index covering these fields must exist + +| `query` +| string +| A Lucene query string +|=== + +[[full-text-index-lucene-syntax]] +==== Lucene Query Syntax + +Both `SEARCH_INDEX` and `SEARCH_FIELDS` accept standard Lucene query syntax. + +===== Boolean Operators + +[%header,cols="2,3"] +|=== +| Syntax | Meaning + +| `java programming` +| Either term (OR, default) + +| `+java +programming` +| Both terms required (AND) + +| `java -python` +| `java` required, `python` excluded + +| `java AND programming` +| Explicit AND + +| `java OR python` +| Explicit OR +|=== + +[source,sql] +---- +-- Requires both terms +SELECT * FROM Article WHERE SEARCH_INDEX('Article[content]', '+java +programming') + +-- Excludes documents about python +SELECT * FROM Article WHERE SEARCH_INDEX('Article[content]', 'java -python') +---- + +===== Phrase Queries + +Wrap a phrase in double quotes to require terms to appear in order: + +[source,sql] +---- +SELECT * FROM Article WHERE SEARCH_INDEX('Article[content]', '"machine learning"') +---- + +===== Wildcard Queries + +[%header,cols="2,3"] +|=== +| Syntax | Matches + +| `data*` +| database, datastore, dataset… + +| `dat?base` +| database, datXbase… + +| `*base` +| Requires `allowLeadingWildcard: true` +|=== + +[source,sql] +---- +SELECT * FROM Article WHERE SEARCH_INDEX('Article[content]', 'data*') +---- + +===== Fuzzy Queries + +Append `~` to match terms within an edit distance: + +[source,sql] +---- +SELECT * FROM Article WHERE SEARCH_INDEX('Article[content]', 'database~') +-- matches "database" +---- + +===== Field-Qualified Queries (Multi-Property Indexes) + +For indexes over multiple fields, restrict a term to a specific field: + +[source,sql] +---- +-- Only match "database" in the title field +SELECT * FROM Article WHERE SEARCH_INDEX('Article[title,body]', 'title:database') + +-- Combine field-specific and general terms +SELECT * FROM Article WHERE SEARCH_INDEX('Article[title,body]', '+title:"multi model" -nosql') +---- + +[[full-text-index-score]] +==== Relevance Score ($score) + +Every match carries a relevance score. +Use `$score` in projections or `ORDER BY` clauses: + +[source,sql] +---- +SELECT title, $score +FROM Article +WHERE SEARCH_INDEX('Article[content]', 'java programming') +ORDER BY $score DESC +---- + +Documents that match more query terms receive higher scores. + +[source,sql] +---- +SELECT title, $score AS relevance +FROM Article +WHERE SEARCH_FIELDS(['content'], 'java programming') +ORDER BY relevance DESC +LIMIT 10 +---- + +[[full-text-index-mlt]] +==== More Like This + +"More Like This" finds documents similar to one or more source documents. +It extracts representative terms from the sources, then searches for other documents sharing those terms. + +[[search-index-more]] +===== SEARCH_INDEX_MORE() + +[source,sql] +---- +SELECT title, $score, $similarity +FROM Article +WHERE SEARCH_INDEX_MORE('Article[content]', [#10:3]) +ORDER BY $similarity DESC +---- + +*Signature:* `SEARCH_INDEX_MORE(indexName, sourceRIDs [, config])` + +[%header,cols="1,1,3"] +|=== +| Parameter | Type | Description + +| `indexName` +| string +| Full-text index name + +| `sourceRIDs` +| array of RIDs +| One or more source documents + +| `config` +| JSON object +| Optional MLT parameters (see <>) +|=== + +[[search-fields-more]] +===== SEARCH_FIELDS_MORE() + +Same as `SEARCH_INDEX_MORE` but resolves the full-text index automatically from field names: + +[source,sql] +---- +SELECT title, $similarity +FROM Article +WHERE SEARCH_FIELDS_MORE(['content'], [#10:3]) +ORDER BY $similarity DESC +---- + +*Signature:* `SEARCH_FIELDS_MORE(fieldNames, sourceRIDs [, config])` + +===== Multiple Source Documents + +Provide multiple RIDs to find documents similar to a combination of sources: + +[source,sql] +---- +SELECT title, $similarity +FROM Article +WHERE SEARCH_INDEX_MORE('Article[content]', [#10:3, #10:4]) +ORDER BY $similarity DESC +---- + +===== Similarity Score ($similarity) + +`$similarity` is a normalized score from `0.0` to `1.0`. +The most similar document in the result set always receives `1.0`. + +[source,sql] +---- +SELECT title, $score, $similarity +FROM Article +WHERE SEARCH_INDEX_MORE('Article[content]', [#10:3]) +ORDER BY $similarity DESC +LIMIT 5 +---- + +[[full-text-index-mlt-config]] +===== More Like This Configuration + +Pass an optional JSON object to tune the algorithm: + +[source,sql] +---- +SELECT title, $similarity +FROM Article +WHERE SEARCH_FIELDS_MORE(['title', 'content'], [#10:3], { + 'minTermFreq': 1, + 'minDocFreq': 3, + 'maxQueryTerms': 50, + 'excludeSource': false +}) +---- + +[%header,cols="2,1,1,4"] +|=== +| Option | Type | Default | Description + +| `minTermFreq` +| int +| `2` +| Minimum times a term must appear in the source document(s) to be considered + +| `minDocFreq` +| int +| `5` +| Minimum number of index documents that must contain a term for it to be used + +| `maxDocFreqPercent` +| float +| `null` +| Exclude terms appearing in more than this fraction of all documents (e.g. `0.5` = 50%) + +| `maxQueryTerms` +| int +| `25` +| Maximum number of terms to use in the similarity query + +| `minWordLen` +| int +| `0` +| Ignore terms shorter than this length (0 = no minimum) + +| `maxWordLen` +| int +| `0` +| Ignore terms longer than this length (0 = no maximum) + +| `boostByScore` +| boolean +| `true` +| Weight terms by TF-IDF score rather than raw frequency + +| `excludeSource` +| boolean +| `true` +| Exclude source documents from results + +| `maxSourceDocs` +| int +| `25` +| Maximum number of source RIDs allowed +|=== + +[[full-text-index-examples]] +==== Practical Examples + +===== Blog Search with Ranking + +[source,sql] +---- +SELECT title, author, $score AS relevance +FROM BlogPost +WHERE SEARCH_INDEX('BlogPost[title,body]', '+java +spring -legacy') +ORDER BY relevance DESC +LIMIT 20 +---- + +===== Autocomplete with Prefix Wildcard + +[source,sql] +---- +SELECT title +FROM Product +WHERE SEARCH_INDEX('Product[name]', 'micro*') +---- + +===== Stemming with English Analyzer + +With `EnglishAnalyzer`, searching for `"run"` also matches `"running"`, `"runs"`, and `"ran"`: + +[source,sql] +---- +CREATE INDEX ON Article (content) FULL_TEXT + METADATA { "analyzer": "org.apache.lucene.analysis.en.EnglishAnalyzer" } + +SELECT * FROM Article WHERE SEARCH_INDEX('Article[content]', 'running') +-- also returns documents containing "run", "runs", "ran" +---- + +===== Related Articles Recommendation + +[source,sql] +---- +SELECT title, $similarity AS score +FROM Article +WHERE SEARCH_INDEX_MORE('Article[title,body]', [#10:42], { + 'minTermFreq': 1, + 'minDocFreq': 2, + 'maxQueryTerms': 30 +}) +ORDER BY score DESC +LIMIT 5 +---- + +===== Readers Who Liked This Also Liked + +[source,sql] +---- +SELECT title, $similarity +FROM Article +WHERE SEARCH_INDEX_MORE('Article[content]', [#10:1, #10:7, #10:12]) +ORDER BY $similarity DESC +LIMIT 10 +---- + +[[full-text-index-notes]] +==== Notes + +* Full-text indexes require all indexed properties to be of type `STRING`. +* Full-text indexes cannot be marked `UNIQUE`. +* Without a `METADATA` block, indexes use `StandardAnalyzer` with `OR` default operator and leading wildcards disabled. +* Indexes created without metadata continue to work with `SEARCH_INDEX` and `SEARCH_INDEX_MORE` exactly as before. +* `$score` and `$similarity` are always available as query variables for matching documents; non-matching documents receive `0`. From 75a3f356b54c9b0f201eab5fd1f2d86db23bf589 Mon Sep 17 00:00:00 2001 From: robfrank Date: Fri, 20 Feb 2026 12:03:26 +0100 Subject: [PATCH 2/8] docs: fix full-text-index guide - SEARCH_FIELDS field mismatch, fuzzy comment, SEARCH_FIELDS_MORE table, JSON quoting Co-Authored-By: Claude Sonnet 4.6 --- .../core-concepts/full-text-index.adoc | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/main/asciidoc/core-concepts/full-text-index.adoc b/src/main/asciidoc/core-concepts/full-text-index.adoc index 2d78cc34..d852c55a 100644 --- a/src/main/asciidoc/core-concepts/full-text-index.adoc +++ b/src/main/asciidoc/core-concepts/full-text-index.adoc @@ -142,7 +142,7 @@ Finds the full-text index automatically from field names, without needing to kno [source,sql] ---- SELECT * FROM Article -WHERE SEARCH_FIELDS(['title', 'content'], 'database tutorial') +WHERE SEARCH_FIELDS(['title', 'body'], 'database tutorial') ---- *Signature:* `SEARCH_FIELDS(fieldNames, query)` @@ -212,10 +212,10 @@ SELECT * FROM Article WHERE SEARCH_INDEX('Article[content]', '"machine learning" | Syntax | Matches | `data*` -| database, datastore, dataset… +| database, datastore, dataset... | `dat?base` -| database, datXbase… +| database, datXbase... | `*base` | Requires `allowLeadingWildcard: true` @@ -233,7 +233,7 @@ Append `~` to match terms within an edit distance: [source,sql] ---- SELECT * FROM Article WHERE SEARCH_INDEX('Article[content]', 'database~') --- matches "database" +-- also matches terms within edit distance 1, e.g. "database", "databasee" ---- ===== Field-Qualified Queries (Multi-Property Indexes) @@ -325,6 +325,23 @@ ORDER BY $similarity DESC *Signature:* `SEARCH_FIELDS_MORE(fieldNames, sourceRIDs [, config])` +[%header,cols="1,1,3"] +|=== +| Parameter | Type | Description + +| `fieldNames` +| array of strings +| Fields to search; a full-text index covering these fields must exist + +| `sourceRIDs` +| array of RIDs +| One or more source documents + +| `config` +| JSON object +| Optional MLT parameters (see <>) +|=== + ===== Multiple Source Documents Provide multiple RIDs to find documents similar to a combination of sources: @@ -361,10 +378,10 @@ Pass an optional JSON object to tune the algorithm: SELECT title, $similarity FROM Article WHERE SEARCH_FIELDS_MORE(['title', 'content'], [#10:3], { - 'minTermFreq': 1, - 'minDocFreq': 3, - 'maxQueryTerms': 50, - 'excludeSource': false + "minTermFreq": 1, + "minDocFreq": 3, + "maxQueryTerms": 50, + "excludeSource": false }) ---- From c96a6e81a6433ab6e14dc64e4d4905c049934c6d Mon Sep 17 00:00:00 2001 From: robfrank Date: Fri, 20 Feb 2026 12:08:19 +0100 Subject: [PATCH 3/8] docs: fix single-quoted JSON keys in related articles example Co-Authored-By: Claude Sonnet 4.6 --- src/main/asciidoc/core-concepts/full-text-index.adoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/asciidoc/core-concepts/full-text-index.adoc b/src/main/asciidoc/core-concepts/full-text-index.adoc index d852c55a..41789a64 100644 --- a/src/main/asciidoc/core-concepts/full-text-index.adoc +++ b/src/main/asciidoc/core-concepts/full-text-index.adoc @@ -478,9 +478,9 @@ SELECT * FROM Article WHERE SEARCH_INDEX('Article[content]', 'running') SELECT title, $similarity AS score FROM Article WHERE SEARCH_INDEX_MORE('Article[title,body]', [#10:42], { - 'minTermFreq': 1, - 'minDocFreq': 2, - 'maxQueryTerms': 30 + "minTermFreq": 1, + "minDocFreq": 2, + "maxQueryTerms": 30 }) ORDER BY score DESC LIMIT 5 From e65a1f31020dbd610afc25af48f17e95d3a16908 Mon Sep 17 00:00:00 2001 From: robfrank Date: Fri, 20 Feb 2026 12:35:14 +0100 Subject: [PATCH 4/8] docs: include full-text-index.adoc in core-concepts chapter --- src/main/asciidoc/core-concepts/chapter.adoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/asciidoc/core-concepts/chapter.adoc b/src/main/asciidoc/core-concepts/chapter.adoc index 2866f20c..b7e90e15 100644 --- a/src/main/asciidoc/core-concepts/chapter.adoc +++ b/src/main/asciidoc/core-concepts/chapter.adoc @@ -11,6 +11,8 @@ include::schema.adoc[] include::indexes.adoc[] +include::full-text-index.adoc[] + include::graphs.adoc[] include::databases.adoc[] From d053291d763c8a51b419695a3026de4b7c449dd6 Mon Sep 17 00:00:00 2001 From: robfrank Date: Fri, 20 Feb 2026 12:41:02 +0100 Subject: [PATCH 5/8] docs: update CREATE INDEX - fix FTS multi-property note, add cross-reference Co-Authored-By: Claude Sonnet 4.6 --- .../query-languages/sql/sql-create-index.adoc | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/asciidoc/query-languages/sql/sql-create-index.adoc b/src/main/asciidoc/query-languages/sql/sql-create-index.adoc index 0539d56b..b5aba4c4 100644 --- a/src/main/asciidoc/query-languages/sql/sql-create-index.adoc +++ b/src/main/asciidoc/query-languages/sql/sql-create-index.adoc @@ -46,6 +46,8 @@ The property must already exist. ** `UNIQUE` does not allow duplicate keys, ** `NOTUNIQUE` allows duplicate keys, ** `FULL_TEXT` based on any single word of text. +Uses https://lucene.apache.org[Apache Lucene] for tokenization and supports configurable analyzers, multi-property indexing, and advanced query syntax. +See <> for full documentation. ** `HNSW` vector index (Hierarchical Navigable Small World). ** `LSMVECTORINDEX` LSM Tree-based vector index. * *`<key-type>`* Defines the key type. @@ -67,8 +69,6 @@ The `NULL_STRATEGY` determines how null values are indexed: NOTE: A unique index does not regard derived types or embedded documents of the indexed type. -NOTE: Full-text indexes do not support multiple properties. - ____ You can use list key types when creating manual composite indexes, but bear in mind that such indexes are not yet fully supported. @@ -157,18 +157,21 @@ To return an error in case of null values, append `NULL_STRATEGY ERROR` when you ArcadeDB> CREATE INDEX ON Employee (address) NOTUNIQUE NULL_STRATEGY ERROR ---- -* Also full text index can be set up: +* Create a full-text index and search it using `SEARCH_INDEX()`: ---- ArcadeDB> CREATE INDEX ON Employee (address) FULL_TEXT ---- -which can be searched with: - +[source,sql] ---- -ArcadeDB> SELECT FROM `Employee[address]` WHERE address LIKE '%New York%' +SELECT * FROM Employee +WHERE SEARCH_INDEX('Employee[address]', 'New York') ---- +NOTE: `LIKE` and `ILIKE` do not use full-text indexes. +See <> for analyzer configuration, Lucene query syntax, relevance scoring, and More Like This. + * Create a manual index to store dates: ---- From f3e2d80b88e9c1c68d8232fa5addfc4f7945e942 Mon Sep 17 00:00:00 2001 From: robfrank Date: Fri, 20 Feb 2026 12:58:17 +0100 Subject: [PATCH 6/8] docs: add SEARCH_INDEX, SEARCH_FIELDS, SEARCH_INDEX_MORE, SEARCH_FIELDS_MORE function stubs Co-Authored-By: Claude Sonnet 4.6 --- .../query-languages/sql/sql-functions.adoc | 92 ++++++++++++++++++- 1 file changed, 91 insertions(+), 1 deletion(-) diff --git a/src/main/asciidoc/query-languages/sql/sql-functions.adoc b/src/main/asciidoc/query-languages/sql/sql-functions.adoc index e314f467..608e8bfc 100644 --- a/src/main/asciidoc/query-languages/sql/sql-functions.adoc +++ b/src/main/asciidoc/query-languages/sql/sql-functions.adoc @@ -1481,7 +1481,7 @@ SELECT vectorAdd([1.0, 2.0, 3.0], [2.0, 3.0, 4.0]) [[vector-approx-distance]] ===== vectorApproxDistance() -Computes approxmate distance between quantized vectors without intermediate full dequantization. +Computes approximate distance between quantized vectors without intermediate full dequantization. Two modes are supported: * `'INT8'` faster than floats, preserves ranking order @@ -2186,3 +2186,93 @@ SELECT version() ---- ''' + +''' + +[discrete] +[[search-index-fn]] +===== SEARCH_INDEX() + +Searches a named full-text index using Lucene query syntax. +Returns `true` for matching documents; use `$score` to rank results. +See <> for full documentation, Lucene syntax, and examples. + +Syntax: `SEARCH_INDEX(indexName, query)` + +*Examples* + +[source,sql] +---- +SELECT title, $score +FROM Article +WHERE SEARCH_INDEX('Article[content]', '+java +spring') +ORDER BY $score DESC +---- + +''' + +[discrete] +[[search-fields-fn]] +===== SEARCH_FIELDS() + +Searches a full-text index resolved automatically from field names. +Equivalent to `SEARCH_INDEX` but without needing to know the index name. +See <> for full documentation. + +Syntax: `SEARCH_FIELDS(fieldNames, query)` + +*Examples* + +[source,sql] +---- +SELECT title, $score +FROM Article +WHERE SEARCH_FIELDS(['title', 'body'], 'database tutorial') +ORDER BY $score DESC +---- + +''' + +[discrete] +[[search-index-more-fn]] +===== SEARCH_INDEX_MORE() + +Finds documents similar to one or more source documents ("More Like This"). +Use `$similarity` (0.0–1.0) to rank results. +See <> for full documentation including configuration options. + +Syntax: `SEARCH_INDEX_MORE(indexName, sourceRIDs [, config])` + +*Examples* + +[source,sql] +---- +SELECT title, $similarity +FROM Article +WHERE SEARCH_INDEX_MORE('Article[content]', [#10:3]) +ORDER BY $similarity DESC +LIMIT 5 +---- + +''' + +[discrete] +[[search-fields-more-fn]] +===== SEARCH_FIELDS_MORE() + +Same as `SEARCH_INDEX_MORE` but resolves the full-text index automatically from field names. +See <> for full documentation. + +Syntax: `SEARCH_FIELDS_MORE(fieldNames, sourceRIDs [, config])` + +*Examples* + +[source,sql] +---- +SELECT title, $similarity +FROM Article +WHERE SEARCH_FIELDS_MORE(['content'], [#10:3]) +ORDER BY $similarity DESC +---- + +''' From 6e158f6edf75f7c69e3851fb0cb4e08175b5baf5 Mon Sep 17 00:00:00 2001 From: robfrank Date: Fri, 20 Feb 2026 13:07:37 +0100 Subject: [PATCH 7/8] docs: add search functions to SQL overview table Co-Authored-By: Claude Sonnet 4.6 --- src/main/asciidoc/query-languages/sql/chapter.adoc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/asciidoc/query-languages/sql/chapter.adoc b/src/main/asciidoc/query-languages/sql/chapter.adoc index 0fe5c182..6e870a17 100644 --- a/src/main/asciidoc/query-languages/sql/chapter.adoc +++ b/src/main/asciidoc/query-languages/sql/chapter.adoc @@ -65,6 +65,10 @@ image:../images/edit.png[link="https://github.com/ArcadeData/arcadedb-docs/blob/ | | | | | <> | | | | | | <> | | | | | | <> | +| | | | | | <> +| | | | | | <> +| | | | | | <> +| | | | | | <> |=== *Extended Functions (APOC Compatible)* From 9d382f3065d742fe752af458ffb7c47f3ab76453 Mon Sep 17 00:00:00 2001 From: robfrank Date: Fri, 20 Feb 2026 13:57:39 +0100 Subject: [PATCH 8/8] docs: fix fuzzy edit distance comment; add cross-ref from indexes to full-text-index Co-Authored-By: Claude Sonnet 4.6 --- src/main/asciidoc/core-concepts/full-text-index.adoc | 2 +- src/main/asciidoc/core-concepts/indexes.adoc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/asciidoc/core-concepts/full-text-index.adoc b/src/main/asciidoc/core-concepts/full-text-index.adoc index 41789a64..137b3908 100644 --- a/src/main/asciidoc/core-concepts/full-text-index.adoc +++ b/src/main/asciidoc/core-concepts/full-text-index.adoc @@ -233,7 +233,7 @@ Append `~` to match terms within an edit distance: [source,sql] ---- SELECT * FROM Article WHERE SEARCH_INDEX('Article[content]', 'database~') --- also matches terms within edit distance 1, e.g. "database", "databasee" +-- also matches terms within edit distance 2 (Lucene default), e.g. "databaSe", "databasee" ---- ===== Field-Qualified Queries (Multi-Property Indexes) diff --git a/src/main/asciidoc/core-concepts/indexes.adoc b/src/main/asciidoc/core-concepts/indexes.adoc index d8609e49..1463a6a3 100644 --- a/src/main/asciidoc/core-concepts/indexes.adoc +++ b/src/main/asciidoc/core-concepts/indexes.adoc @@ -47,7 +47,7 @@ ArcadeDB's LSM Tree Indexes can index property fields in various ways: 2. An index can be for a single property, or multiple properties in a compound index. -3. String properties can be index tokenized in a full-text index. +3. String properties can be index tokenized in a <>. 4. Object properties can be indexed by keys or by values.