IndexDefinition is used to define a index definition for automatic indexing on Hash or Json update.
| 11 | |
| 12 | |
| 13 | class 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 |
no outgoing calls