MCPcopy
hub / github.com/redis/redis-py / IndexDefinition

Class IndexDefinition

redis/commands/search/index_definition.py:13–84  ·  view source on GitHub ↗

IndexDefinition is used to define a index definition for automatic indexing on Hash or Json update.

Source from the content-addressed store, hash-verified

11
12
13class IndexDefinition:
14 """IndexDefinition is used to define a index definition for automatic
15 indexing on Hash or Json update."""
16
17 def __init__(
18 self,
19 prefix=[],
20 filter=None,
21 language_field=None,
22 language=None,
23 score_field=None,
24 score=1.0,
25 payload_field=None,
26 index_type=None,
27 ):
28 self.args = []
29 self._append_index_type(index_type)
30 self._append_prefix(prefix)
31 self._append_filter(filter)
32 self._append_language(language_field, language)
33 self._append_score(score_field, score)
34 self._append_payload(payload_field)
35
36 def _append_index_type(self, index_type):
37 """Append `ON HASH` or `ON JSON` according to the enum."""
38 if index_type is IndexType.HASH:
39 self.args.extend(["ON", "HASH"])
40 elif index_type is IndexType.JSON:
41 self.args.extend(["ON", "JSON"])
42 elif index_type is not None:
43 raise RuntimeError(f"index_type must be one of {list(IndexType)}")
44
45 def _append_prefix(self, prefix):
46 """Append PREFIX."""
47 if prefix is None:
48 raise TypeError("prefix must be provided")
49 if len(prefix) > 0:
50 prefix = list_or_args(prefix, [])
51 self.args.append("PREFIX")
52 self.args.append(len(prefix))
53 for p in prefix:
54 self.args.append(p)
55
56 def _append_filter(self, filter):
57 """Append FILTER."""
58 if filter is not None:
59 self.args.append("FILTER")
60 self.args.append(filter)
61
62 def _append_language(self, language_field, language):
63 """Append LANGUAGE_FIELD and LANGUAGE."""
64 if language_field is not None:
65 self.args.append("LANGUAGE_FIELD")
66 self.args.append(language_field)
67 if language is not None:
68 self.args.append("LANGUAGE")
69 self.args.append(language)
70

Callers 15

search_vss.pyFile · 0.90
query_geo.pyFile · 0.90
home_json.pyFile · 0.90
query_agg.pyFile · 0.90
query_em.pyFile · 0.90
query_ft.pyFile · 0.90
query_range.pyFile · 0.90
query_combined.pyFile · 0.90
test_drop_indexMethod · 0.90
test_aliasMethod · 0.90
test_index_definitionMethod · 0.90

Calls

no outgoing calls