Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions redis/commands/search/field.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,14 @@ def __init__(
self.args_suffix = list()
self.as_name = as_name

if sortable:
self.args_suffix.append(Field.SORTABLE)
if no_index:
self.args_suffix.append(Field.NOINDEX)
if index_missing:
self.args_suffix.append(Field.INDEX_MISSING)
if index_empty:
self.args_suffix.append(Field.INDEX_EMPTY)
if sortable:
self.args_suffix.append(Field.SORTABLE)

if no_index and not sortable:
raise ValueError("Non-Sortable non-Indexable fields are ignored")
Expand Down
17 changes: 17 additions & 0 deletions tests/test_asyncio/test_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -671,6 +671,23 @@ async def test_no_index(decoded_r: redis.Redis):
TagField("name", no_index=True, sortable=False)


@pytest.mark.redismod
@skip_if_server_version_lt("7.4.0")
@skip_ifmodversion_lt("2.10.0", "search")
async def test_create_index_empty_or_missing_fields_with_sortable(
decoded_r: redis.Redis,
):
definition = IndexDefinition(prefix=["property:"], index_type=IndexType.HASH)

fields = [
TextField("title", sortable=True, index_empty=True),
TagField("features", index_missing=True, sortable=True),
TextField("description", no_index=True, sortable=True),
]

await decoded_r.ft().create_index(fields, definition=definition)


@pytest.mark.redismod
async def test_explain(decoded_r: redis.Redis):
await decoded_r.ft().create_index(
Expand Down
15 changes: 15 additions & 0 deletions tests/test_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -2710,6 +2710,21 @@ def test_search_missing_fields(client):
_assert_search_result(client, res, ["property:1", "property:2"])


@pytest.mark.redismod
@skip_if_server_version_lt("7.4.0")
@skip_ifmodversion_lt("2.10.0", "search")
def test_create_index_empty_or_missing_fields_with_sortable(client):
definition = IndexDefinition(prefix=["property:"], index_type=IndexType.HASH)

fields = [
TextField("title", sortable=True, index_empty=True),
TagField("features", index_missing=True, sortable=True),
TextField("description", no_index=True, sortable=True),
]

client.ft().create_index(fields, definition=definition)


@pytest.mark.redismod
@skip_if_server_version_lt("7.4.0")
@skip_ifmodversion_lt("2.10.0", "search")
Expand Down
Loading