redis-om-python
redis-om-python copied to clipboard
Tags separators are not copied when OM rebuilds the index
In the following test, I create an index with:
$.tags TAG SEPARATOR ","
But OM rewrites it using |.
(AFAIU the default separator is not |, but , in any case).
"SEPARATOR defaults to a comma (,), and can be any printable ASCII character." From https://redis.io/docs/stack/search/reference/tags/
Here's my index creation:
FT.CREATE document_idx ON JSON PREFIX 1 keybase:kb SCHEMA $.name TEXT $.content TEXT $.creation NUMERIC SORTABLE $.update NUMERIC SORTABLE $.state TAG $.owner TEXT $.processable TAG $.tags TAG SEPARATOR "," $.category TAG
127.0.0.1:6379> FT.INFO document_idx
1) index_name
2) document_idx
3) index_options
4) (empty array)
5) index_definition
6) 1) key_type
2) JSON
3) prefixes
4) 1) keybase:kb
5) default_score
6) "1"
7) attributes
8) 1) 1) identifier
2) $.name
3) attribute
4) $.name
5) type
6) TEXT
7) WEIGHT
8) "1"
2) 1) identifier
2) $.content
3) attribute
4) $.content
5) type
6) TEXT
7) WEIGHT
8) "1"
3) 1) identifier
2) $.creation
3) attribute
4) $.creation
5) type
6) NUMERIC
7) SORTABLE
4) 1) identifier
2) $.update
3) attribute
4) $.update
5) type
6) NUMERIC
7) SORTABLE
5) 1) identifier
2) $.state
3) attribute
4) $.state
5) type
6) TAG
7) SEPARATOR
8)
6) 1) identifier
2) $.owner
3) attribute
4) $.owner
5) type
6) TEXT
7) WEIGHT
8) "1"
7) 1) identifier
2) $.processable
3) attribute
4) $.processable
5) type
6) TAG
7) SEPARATOR
8)
8) 1) identifier
2) $.tags
3) attribute
4) $.tags
5) type
6) TAG
7) SEPARATOR
8) ,
9) 1) identifier
2) $.category
3) attribute
4) $.category
5) type
6) TAG
7) SEPARATOR
8)
9) num_docs
10) "0"
11) max_doc_id
12) "0"
13) num_terms
14) "0"
15) num_records
16) "0"
17) inverted_sz_mb
18) "0"
19) vector_index_sz_mb
20) "0"
21) total_inverted_index_blocks
22) "1"
23) offset_vectors_sz_mb
24) "0"
25) doc_table_size_mb
26) "0"
27) sortable_values_size_mb
28) "0"
29) key_table_size_mb
30) "0"
31) records_per_doc_avg
32) "nan"
33) bytes_per_record_avg
34) "nan"
35) offsets_per_term_avg
36) "nan"
37) offset_bits_per_record_avg
38) "nan"
39) hash_indexing_failures
40) "0"
41) indexing
42) "0"
43) percent_indexed
44) "1"
45) gc_stats
46) 1) bytes_collected
2) "0"
3) total_ms_run
4) "0"
5) total_cycles
6) "0"
7) average_cycle_time_ms
8) "nan"
9) last_run_time_ms
10) "0"
11) gc_numeric_trees_missed
12) "0"
13) gc_blocks_denied
14) "0"
47) cursor_stats
48) 1) global_idle
2) (integer) 0
3) global_total
4) (integer) 0
5) index_capacity
6) (integer) 128
7) index_total
8) (integer) 0
Here's how OM rewrites the index:
1677772267.249488 [0 [::1]:57336] "ft.create" "document_idx" "ON" "JSON" "PREFIX" "1" "keybase:json:" "SCHEMA" "$.pk" "AS" "pk" "TAG" "SEPARATOR" "|" "$.name" "AS" "name" "TAG" "SEPARATOR" "|" "$.name" "AS" "name_fts" "TEXT" "$.content" "AS" "content" "TAG" "SEPARATOR" "|" "$.content" "AS" "content_fts" "TEXT" "$.creation" "AS" "creation" "NUMERIC" "$.last" "AS" "last" "NUMERIC" "$.tags" "AS" "tags" "TAG" "SEPARATOR" "|" "$.category" "AS" "category" "TAG" "SEPARATOR" "|" "$.processable" "AS" "processable" "NUMERIC" "$.state" "AS" "state" "TAG" "SEPARATOR" "|" "$.author" "AS" "author" "TAG" "SEPARATOR" "|" "$.owner" "AS" "owner" "TAG" "SEPARATOR" "|" "$.versions[*].pk" "AS" "versions_pk" "TAG" "SEPARATOR" "|" "$.versions[*].last" "AS" "versions_last" "TAG" "SEPARATOR" "|"
127.0.0.1:6379> FT.INFO document_idx
1) index_name
2) document_idx
3) index_options
4) (empty array)
5) index_definition
6) 1) key_type
2) JSON
3) prefixes
4) 1) keybase:json:
5) default_score
6) "1"
7) attributes
8) 1) 1) identifier
2) $.pk
3) attribute
4) pk
5) type
6) TAG
7) SEPARATOR
8) |
2) 1) identifier
2) $.name
3) attribute
4) name
5) type
6) TAG
7) SEPARATOR
8) |
3) 1) identifier
2) $.name
3) attribute
4) name_fts
5) type
6) TEXT
7) WEIGHT
8) "1"
4) 1) identifier
2) $.content
3) attribute
4) content
5) type
6) TAG
7) SEPARATOR
8) |
5) 1) identifier
2) $.content
3) attribute
4) content_fts
5) type
6) TEXT
7) WEIGHT
8) "1"
6) 1) identifier
2) $.creation
3) attribute
4) creation
5) type
6) NUMERIC
7) 1) identifier
2) $.last
3) attribute
4) last
5) type
6) NUMERIC
8) 1) identifier
2) $.tags
3) attribute
4) tags
5) type
6) TAG
7) SEPARATOR
8) |
9) 1) identifier
2) $.category
3) attribute
4) category
5) type
6) TAG
7) SEPARATOR
8) |
10) 1) identifier
2) $.processable
3) attribute
4) processable
5) type
6) NUMERIC
11) 1) identifier
2) $.state
3) attribute
4) state
5) type
6) TAG
7) SEPARATOR
8) |
12) 1) identifier
2) $.author
3) attribute
4) author
5) type
6) TAG
7) SEPARATOR
8) |
13) 1) identifier
2) $.owner
3) attribute
4) owner
5) type
6) TAG
7) SEPARATOR
8) |
14) 1) identifier
2) $.versions[*].pk
3) attribute
4) versions_pk
5) type
6) TAG
7) SEPARATOR
8) |
15) 1) identifier
2) $.versions[*].last
3) attribute
4) versions_last
5) type
6) TAG
7) SEPARATOR
8) |
9) num_docs
10) "0"
11) max_doc_id
12) "0"
13) num_terms
14) "0"
15) num_records
16) "0"
17) inverted_sz_mb
18) "0"
19) vector_index_sz_mb
20) "0"
21) total_inverted_index_blocks
22) "1"
23) offset_vectors_sz_mb
24) "0"
25) doc_table_size_mb
26) "0"
27) sortable_values_size_mb
28) "0"
29) key_table_size_mb
30) "0"
31) records_per_doc_avg
32) "nan"
33) bytes_per_record_avg
34) "nan"
35) offsets_per_term_avg
36) "nan"
37) offset_bits_per_record_avg
38) "nan"
39) hash_indexing_failures
40) "0"
41) indexing
42) "0"
43) percent_indexed
44) "1"
45) gc_stats
46) 1) bytes_collected
2) "0"
3) total_ms_run
4) "0"
5) total_cycles
6) "0"
7) average_cycle_time_ms
8) "nan"
9) last_run_time_ms
10) "0"
11) gc_numeric_trees_missed
12) "0"
13) gc_blocks_denied
14) "0"
47) cursor_stats
48) 1) global_idle
2) (integer) 0
3) global_total
4) (integer) 0
5) index_capacity
6) (integer) 128
7) index_total
8) (integer) 0