milvus-io/milvus

[Feature]: Support "&" and "|" operator in boolean expression

Open

#18.805 aberto em 24 de ago. de 2022

Ver no GitHub
 (15 comments) (2 reactions) (2 assignees)Go (4.000 forks)batch import
good first issuekind/feature

Métricas do repositório

Stars
 (44.298 stars)
Métricas de merge de PR
 (Mesclagem média 7d) (314 fundiu PRs em 30d)

Description

Is there an existing issue for this?

  • I have searched the existing issues

Is your feature request related to a problem? Please describe.

Users may have a lot of bool attributes to do filtering. He can create a bool field for each attribute: bool_1, bool_2, bool_3, .... He want to filter out the entities which bool_1=true, bool_2=ture, bool_3=true. He can do search filtering by this expression: search(expr="bool_1 && bool_2 && bool_3")

This approach is not efficient. It creates too many fields in a collection. And not easy to expand, when there is a new bool attribute, he need to create a new collection with the new field.

We can combine the bool attributes into an int64 value, with only one int64 field for the collection. Convert bool_1 as the first bit of the int64 value, bool_2 as the second bit, bool_3 as the third bit, etc. Then each int64 field can support up to 64 bool attributes.

And do search filtering in this way(assume the int64 field name is "flag"): search(expr="flag & 8 == 0")

Describe the solution you'd like.

No response

Describe an alternate solution.

No response

Anything else? (Additional Context)

No response

Guia do colaborador