nidx-binding 6.3.1.post23__tar.gz → 6.3.1.post33__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/Cargo.toml +1 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/PKG-INFO +1 -1
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_binding/Cargo.toml +1 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/Cargo.toml +1 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_protos/Cargo.toml +1 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_protos/pyproject.toml +1 -1
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_relation/Cargo.toml +1 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_tantivy/Cargo.toml +1 -2
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_tests/Cargo.toml +1 -2
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_text/Cargo.toml +1 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_types/Cargo.toml +1 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/Cargo.toml +1 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/pyproject.toml +1 -1
- nidx_binding-6.3.1.post33/src/searcher/query_language.rs +123 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/searcher/query_planner.rs +23 -31
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/searcher/shard_suggest.rs +2 -16
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/tests/test_date_range_search.rs +90 -28
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/tests/test_search_filtering.rs +79 -27
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/tests/test_suggest.rs +30 -21
- nidx_binding-6.3.1.post23/src/searcher/query_language.rs +0 -584
- nidx_binding-6.3.1.post23/src/searcher/query_planner/old_filter_compatibility.rs +0 -212
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-0cfce9b29547f8f5bafa6e440f86103be7b8c4ad2fd92db9ac223f4efbe23d10.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-1a561eed00f3dbe868bf5030059793300209179dc8fb73e4b57a54b5e81262fe.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-1d3fca2682e25a01143da92285297f134a6a105a96f64d87e0db3abb219855e4.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-249b3b57c27a71baa823f1fe0f0bba9c9af36f61c28f731e58beea60ec48e687.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-24cb6b683daa42d7125f862e25943ab4be7bf275cd8739f8da4859d701795e1a.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-263c8fce6db5b03bbd012fafdba6943cbee6ed7eb8976cdef4f5b01dde7ca6fd.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-2a5d92fb1638df830a4477a7cdf24e6db6b43034b7bbe74fdfb63e8afe2c4071.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-2b065a363f58caed60e3706603c1260dbf5a4c795604a5b68edda22eb07fec1b.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-3fc3cb39934683de8cd475ce1368c8373453eb1e01f81587d66b9d14b109ce6e.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-48f33b77b7c1633467b0b2efcaa1d3c207e7757e4f1d83b40d15e6ca365f7771.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-4ae09f2c08e2f324bee01bb8487a8f37678a1c5e9d327339235c50d4921a8949.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-4d7a76fa413c9ef0ce2a47ac7bb7e01d3e6a2aabded9487d21010a53efee8852.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-4fcbdd6657c7dc9b60b3a563dd41711b3dbcf72ce063427b7a01f8cddf34c244.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-577109ac00ccfbd38ecaccab94116f2f46a4caf5612afa372cded197123c1e08.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-5db25f97d8578d6d78f2f6bd4b72cc82a9b1b82805c6422d967ac63b20d99db4.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-5ec3233a3a23e926055056d46bdde17836a633066dbb5f349502648cd3ea9a60.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-66edb6ea424d8681927dcddb6bac5f1239175f4775d1f40417ba15054b0c6f19.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-6f9c6d201c1b5712efb68c363bffd3e0169c11f2a8f925e8cd4e8808599ff7b4.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-733c3ebacc86f444bf5e2dd79ade660c291e88a00fc09b722f6e2e191545874c.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-77a245aed9f6f8b9fc643efbd4b1e2e8e99bbba085e3e75a4f29321cd7b2a25c.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-7a3bf27c330c468a596e8a297cf7d8b192e31e67ecc5177c1267f579e8e247c7.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-7a7e59e47b30b12237511fd3d7da2d17b0471ad2b006af48d6a6f587c779692b.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-7dcbb33312cc9f11ae3a6d73b1ace017a9f19a8bf8f10304fc57977c8efeadff.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-7efa7c0d747afc4b6aed0586ff846c27839c3213ff7ee9f30c89b0d0f17e60e3.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-8493140d788604d498a4e48da4158708572ccc9d60185290a00d549cc84533db.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-8493bb0059b013eaca42fd10cd7d04f0d06a8acaed379eff0d23f3229edde9ee.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-87996b3d6c7a2195438d7038015b06949102bce8c7b8cd8db1f83aaf23cbe489.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-8f096d8171b89f9615d18f95d696dc9e4fb3674e103161a713cdc806f7a68506.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-917732a56ee04bf3a6e127319dda8225210869c82f9828d878162394dba4e078.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-95fe4ef93ee90733db1b67ed7987f80b5aac792f1590b979c68b418d1599eb98.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-9b67658569b343d8b4b61ae0a7dc721f367f2ba33c7b69b9e68bfd5c9bff5206.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-9c8062ea55d070afef68309e58fa987eb37fda44e1efbf68c8ba2af7846cc968.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-a06e1d9f6f95e4c4c2b98310ebddcc9d963cc033582bf2e945e8bf3a301b4247.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-a55265c9b07bd1399961a6f1e757201fd0eebe868ddaf96437111113d80fce92.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-a891a37be5c2d7cce775c2dd33726b0318fd3839beab222a1b22bc6174604207.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-a945191bb4b3e37d6823ed3ad499339d007d69983105de8567777d9daf517b28.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-abe9f7832f2bd799ac44008da031e8d8ab52d4f5fbfc2a7e3974e8873bae55b2.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-aca588cca57a85e4d7fcc40c23cd87e57d53d11ca550d78e7e3d5e39e524fcd3.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-b02f8aafc00a7724510772ac41269e368c5bccf03ef7b4590e0ef6fd1a1bf64f.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-b742e17cabe2d64617e9aa64bafc782172f7a4f8023d1b54f952a0fb39f6b2b8.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-b94e349dbc0daec57f8f8f6e9e2dffb06100b1bb2b41d297c9f3b191da37a83d.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-bd9afa22994aba671dbf7b5f89b53c2ee02f53c0442a81265786a6d52d08512f.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-be60554eca98a5899efc6b49785cecd6444a6d39afed9e4a884ce2dbf162012c.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-bf49702b506c9a1650ece1f8e8d9f14834a902f8caefafe30ded55e2790f2188.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-bfb8ae2e860e451b0868a7b1b50a451d998b2105f9fdfd307b26a1775d145e9f.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-bfcd21ed704cd305db5c17fcdec7d92aa4ac501913c9c9514d8ff92928c0c7e7.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-c3ab694650f49a75b146fb877a92e48c4f20f0d99f70f8ec859fbb763b01a1e5.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-c55542bb9fae544d87fae6f30e0fe8a9088d12075f4442ab4fe2fcd05e472234.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-cb29a6556d35ac630ee0aa885dd7341cf9573bd3efd216ff8a887b87686b03db.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-d0a1f341a89f5f14696b10baa72db9d95551c2b7e5fc67308fd52dc03dd98a92.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-d2ad0a0ca2649c9e4873cfcc1fc66d2d07cc45d0f65c560b06d7b5f592f4fa8a.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-d6cfe78eb635ba0b89ca4021a4dc8182d18ab5b197f30149cd28488eba4c1df5.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-d729b56dea00e49dcdba8cf0001e2811da27351eabe98212db3b589f18fc6f32.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-d9658bfd4e7170b41d03f2ddf2446d0bf54171c0d39d53bf20af2b8437f2ec48.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-dbba7b3d3289425bae711aedbf73fbc3699f857f86f84d95c3b556d05c5658b0.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-dcb96b649d6d63a58efd5d445453a4f3d7869a56ff714b69bedf3d616a0473ca.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-ebd876fbf5362a5900e75bc05f2f11c73c406ef7da4e95097fc6a1c3d1b8bc54.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-eef5cc6bce1cc14eba8f3e68971724ef181e88cffcedd74673615f2026b89a62.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/.sqlx/query-ef56d5fefc5774040d1ee397beadb475f6af02768c22f0e583c74062e2e821ce.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/Cargo.lock +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/README.md +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/migrations/20241007163501_initial.sql +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/migrations/20241211120039_merge_job_priority.sql +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/migrations/20241211121159_basic_indexes.sql +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/migrations/20241212151105_check_segment_records.sql +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/migrations/20250110145554_in_flight_messages.sql +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_binding/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/src/fuzzy_query.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/src/query_io.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/src/reader.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/src/request_types.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/src/schema.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/src/search_query.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/src/search_response.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/src/set_query.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/src/stop_words.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/README.md +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/ar.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/az.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/bn.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/ca.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/ch.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/da.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/de.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/el.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/en.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/es.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/eu.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/extract.py +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/fi.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/fr.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/he.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/hu.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/id.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/it.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/kk.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/ne.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/nl.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/no.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/pt.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/ro.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/ru.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/sl.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/sv.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/tg.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/stop_words/tr.json +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_paragraph/tests/reader.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_protos/build.py +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_protos/build.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_protos/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_protos/src/nidx.proto +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_relation/src/graph_query_parser.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_relation/src/io_maps.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_relation/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_relation/src/reader.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_relation/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_relation/src/schema.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_relation/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_relation/tests/test_graph_search.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_relation/tests/test_reader.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_relation/tests/test_writer.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_tantivy/src/index_reader.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_tantivy/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_tests/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_text/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_text/src/prefilter.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_text/src/query_io.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_text/src/reader.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_text/src/request_types.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_text/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_text/src/schema.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_text/src/search_query.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_text/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_text/tests/test_flow.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_text/tests/test_search.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_text/tests/test_streaming.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_types/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_types/src/prefilter.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_types/src/query_language.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/config.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/data_point/disk_hnsw.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/data_point/mod.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/data_point/node.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/data_point/ops_hnsw.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/data_point/params.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/data_point/ram_hnsw.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/data_point/tests.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/data_point_provider/mod.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/data_point_provider/reader.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/data_types/data_store.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/data_types/mod.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/data_types/trie.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/data_types/trie_ram.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/formula/mod.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/indexer.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/inverted_index/fst_index.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/inverted_index/map.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/inverted_index.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/query_io.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/request_types.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/utils.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/vector_types/dense_f32.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/src/vector_types/mod.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/tests/test_basic_search.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/nidx_vector/tests/test_hidden.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/api/grpc.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/api/shards.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/api.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/control.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/errors.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/grpc_server.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/import_export.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/indexer.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/main.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/metadata/deletion.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/metadata/index.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/metadata/index_request.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/metadata/merge_job.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/metadata/segment.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/metadata/shard.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/metadata.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/metrics.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/scheduler/audit_task.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/scheduler/log_merge.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/scheduler/merge_task.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/scheduler/metrics_task.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/scheduler/purge_tasks.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/scheduler/vector_merge.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/scheduler.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/searcher/grpc.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/searcher/index_cache.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/searcher/shard_search.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/searcher/shard_selector.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/searcher/streams.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/searcher/sync.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/searcher.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/segment_store.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/settings.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/telemetry/duration_layer.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/telemetry/log_format.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/telemetry/middleware.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/telemetry.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/tool.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/src/worker.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/tests/common/services.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/tests/test_search_relations.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/tests/test_search_sorting.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/tests/test_searcher_cluster.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/tests/test_security_search.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/tests/test_shards.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/tests/test_shards_api.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/tests/test_synced_searcher.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/tests/test_vector_normalization.rs +0 -0
- {nidx_binding-6.3.1.post23 → nidx_binding-6.3.1.post33}/tests/test_vectorsets.rs +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: nidx_binding
|
3
|
-
Version: 6.3.1.
|
3
|
+
Version: 6.3.1.post33
|
4
4
|
Classifier: Programming Language :: Rust
|
5
5
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
6
6
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
@@ -4,7 +4,7 @@ build-backend = "pdm.backend"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "nidx_protos"
|
7
|
-
version = "6.3.1.
|
7
|
+
version = "6.3.1.post33"
|
8
8
|
license = { text = "AGPL" }
|
9
9
|
description = "Protobuf definitions for nucliadb/nidx"
|
10
10
|
authors = [ { name = "Nuclia", email = "nucliadb@nuclia.com" }]
|
@@ -2,8 +2,7 @@
|
|
2
2
|
name = "nidx_tests"
|
3
3
|
version = "0.1.0"
|
4
4
|
edition = "2021"
|
5
|
-
|
6
|
-
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
5
|
+
license = "AGPL-3.0"
|
7
6
|
|
8
7
|
[dependencies]
|
9
8
|
nidx_protos = { version = "0.1.0", path = "../nidx_protos" }
|
@@ -13,7 +13,7 @@ classifiers = [
|
|
13
13
|
"Programming Language :: Python :: Implementation :: CPython",
|
14
14
|
"Programming Language :: Python :: Implementation :: PyPy",
|
15
15
|
]
|
16
|
-
version = "6.3.1.
|
16
|
+
version = "6.3.1.post33"
|
17
17
|
|
18
18
|
[project.urls]
|
19
19
|
Homepage = "https://nuclia.com"
|
@@ -0,0 +1,123 @@
|
|
1
|
+
// Copyright (C) 2021 Bosutech XXI S.L.
|
2
|
+
//
|
3
|
+
// nucliadb is offered under the AGPL v3.0 and as commercial software.
|
4
|
+
// For commercial licensing, contact us at info@nuclia.com.
|
5
|
+
//
|
6
|
+
// AGPL:
|
7
|
+
// This program is free software: you can redistribute it and/or modify
|
8
|
+
// it under the terms of the GNU Affero General Public License as
|
9
|
+
// published by the Free Software Foundation, either version 3 of the
|
10
|
+
// License, or (at your option) any later version.
|
11
|
+
//
|
12
|
+
// This program is distributed in the hope that it will be useful,
|
13
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
// GNU Affero General Public License for more details.
|
16
|
+
//
|
17
|
+
// You should have received a copy of the GNU Affero General Public License
|
18
|
+
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
|
20
|
+
use nidx_protos::{
|
21
|
+
filter_expression::{Expr, FacetFilter, FilterExpressionList},
|
22
|
+
FilterExpression,
|
23
|
+
};
|
24
|
+
use nidx_types::query_language::*;
|
25
|
+
|
26
|
+
/// Extract an expression only involving some labels if it's an AND subset of the total expression
|
27
|
+
pub fn extract_label_filters(expression: &FilterExpression, labels: &[&str]) -> Option<BooleanExpression> {
|
28
|
+
match expression.expr.as_ref().unwrap() {
|
29
|
+
Expr::Facet(FacetFilter {
|
30
|
+
facet,
|
31
|
+
}) if labels.contains(&facet.as_str()) => Some(BooleanExpression::Literal(facet.clone())),
|
32
|
+
Expr::BoolNot(not_expr) => {
|
33
|
+
extract_label_filters(not_expr.as_ref(), labels).map(|e| BooleanExpression::Not(Box::new(e)))
|
34
|
+
}
|
35
|
+
Expr::BoolAnd(FilterExpressionList {
|
36
|
+
operands,
|
37
|
+
}) => {
|
38
|
+
let relevant: Vec<_> = operands.iter().filter_map(|e| extract_label_filters(e, labels)).collect();
|
39
|
+
match &relevant[..] {
|
40
|
+
[] => None,
|
41
|
+
[expression] => Some(expression.clone()),
|
42
|
+
_ => Some(BooleanExpression::Operation(BooleanOperation {
|
43
|
+
operator: Operator::And,
|
44
|
+
operands: relevant,
|
45
|
+
})),
|
46
|
+
}
|
47
|
+
}
|
48
|
+
_ => None,
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
#[cfg(test)]
|
53
|
+
mod tests {
|
54
|
+
use super::*;
|
55
|
+
|
56
|
+
#[test]
|
57
|
+
fn test_extract_label_filters() {
|
58
|
+
const LABELS: &[&str] = &["/v", "/w"];
|
59
|
+
|
60
|
+
let a = FilterExpression {
|
61
|
+
expr: Some(Expr::Facet(FacetFilter {
|
62
|
+
facet: "/a".into(),
|
63
|
+
})),
|
64
|
+
};
|
65
|
+
let v = FilterExpression {
|
66
|
+
expr: Some(Expr::Facet(FacetFilter {
|
67
|
+
facet: "/v".into(),
|
68
|
+
})),
|
69
|
+
};
|
70
|
+
let w = FilterExpression {
|
71
|
+
expr: Some(Expr::Facet(FacetFilter {
|
72
|
+
facet: "/w".into(),
|
73
|
+
})),
|
74
|
+
};
|
75
|
+
|
76
|
+
let not = |e| FilterExpression {
|
77
|
+
expr: Some(Expr::BoolNot(Box::new(e))),
|
78
|
+
};
|
79
|
+
|
80
|
+
// Literal
|
81
|
+
assert_eq!(extract_label_filters(&a, LABELS), None);
|
82
|
+
assert_eq!(extract_label_filters(&v, LABELS), Some(BooleanExpression::Literal("/v".into())));
|
83
|
+
|
84
|
+
// Not literal
|
85
|
+
assert_eq!(extract_label_filters(¬(a.clone()), LABELS), None);
|
86
|
+
|
87
|
+
assert_eq!(
|
88
|
+
extract_label_filters(¬(v.clone()), LABELS),
|
89
|
+
Some(BooleanExpression::Not(Box::new(BooleanExpression::Literal("/v".into()))))
|
90
|
+
);
|
91
|
+
|
92
|
+
// Or (not supported)
|
93
|
+
let or_expr = FilterExpression {
|
94
|
+
expr: Some(Expr::BoolOr(FilterExpressionList {
|
95
|
+
operands: vec![a.clone(), v.clone(), not(w.clone())],
|
96
|
+
})),
|
97
|
+
};
|
98
|
+
assert_eq!(extract_label_filters(&or_expr, LABELS), None);
|
99
|
+
|
100
|
+
// And
|
101
|
+
let expr = FilterExpression {
|
102
|
+
expr: Some(Expr::BoolAnd(FilterExpressionList {
|
103
|
+
operands: vec![a.clone(), v.clone(), not(w.clone())],
|
104
|
+
})),
|
105
|
+
};
|
106
|
+
let expected = BooleanExpression::Operation(BooleanOperation {
|
107
|
+
operator: Operator::And,
|
108
|
+
operands: vec![
|
109
|
+
BooleanExpression::Literal("/v".into()),
|
110
|
+
BooleanExpression::Not(Box::new(BooleanExpression::Literal("/w".into()))),
|
111
|
+
],
|
112
|
+
});
|
113
|
+
assert_eq!(extract_label_filters(&expr, LABELS), Some(expected));
|
114
|
+
|
115
|
+
// Nested
|
116
|
+
let expr = FilterExpression {
|
117
|
+
expr: Some(Expr::BoolAnd(FilterExpressionList {
|
118
|
+
operands: vec![a, v, or_expr],
|
119
|
+
})),
|
120
|
+
};
|
121
|
+
assert_eq!(extract_label_filters(&expr, LABELS), Some(BooleanExpression::Literal("/v".into())));
|
122
|
+
}
|
123
|
+
}
|
@@ -27,12 +27,9 @@ use nidx_types::prefilter::PrefilterResult;
|
|
27
27
|
use nidx_types::query_language::*;
|
28
28
|
use nidx_vector::VectorSearchRequest;
|
29
29
|
use nidx_vector::SEGMENT_TAGS;
|
30
|
-
use old_filter_compatibility::filter_from_search_request;
|
31
30
|
|
32
31
|
use super::query_language::extract_label_filters;
|
33
32
|
|
34
|
-
pub mod old_filter_compatibility;
|
35
|
-
|
36
33
|
/// The queries a [`QueryPlan`] has decided to send to each index.
|
37
34
|
#[derive(Default, Clone)]
|
38
35
|
pub struct IndexQueries {
|
@@ -67,19 +64,7 @@ pub struct QueryPlan {
|
|
67
64
|
pub index_queries: IndexQueries,
|
68
65
|
}
|
69
66
|
|
70
|
-
pub fn build_query_plan(
|
71
|
-
// Backwards compatibility with old filters
|
72
|
-
let (field_filter, paragraph_filter) = filter_from_search_request(&search_request)?;
|
73
|
-
let has_old_filters = field_filter.is_some() || paragraph_filter.is_some();
|
74
|
-
let has_new_filters = search_request.field_filter.is_some() || search_request.paragraph_filter.is_some();
|
75
|
-
if has_old_filters && has_new_filters {
|
76
|
-
return Err(anyhow::anyhow!("Cannot specify old and new filters in the same request"));
|
77
|
-
}
|
78
|
-
if has_old_filters {
|
79
|
-
search_request.field_filter = field_filter;
|
80
|
-
search_request.paragraph_filter = paragraph_filter;
|
81
|
-
}
|
82
|
-
|
67
|
+
pub fn build_query_plan(search_request: SearchRequest) -> anyhow::Result<QueryPlan> {
|
83
68
|
let relations_request = compute_relations_request(&search_request);
|
84
69
|
let texts_request = compute_texts_request(&search_request);
|
85
70
|
let vectors_request = compute_vectors_request(&search_request)?;
|
@@ -186,7 +171,6 @@ fn compute_relations_request(search_request: &SearchRequest) -> Option<RelationS
|
|
186
171
|
shard_id: search_request.shard.clone(),
|
187
172
|
prefix: search_request.relation_prefix.clone(),
|
188
173
|
subgraph: search_request.relation_subgraph.clone(),
|
189
|
-
reload: search_request.reload,
|
190
174
|
})
|
191
175
|
}
|
192
176
|
|
@@ -222,29 +206,37 @@ pub fn filter_to_boolean_expression(filter: FilterExpression) -> anyhow::Result<
|
|
222
206
|
|
223
207
|
#[cfg(test)]
|
224
208
|
mod tests {
|
225
|
-
use nidx_protos::
|
209
|
+
use nidx_protos::filter_expression::{FacetFilter, FilterExpressionList};
|
226
210
|
|
227
211
|
use super::*;
|
228
212
|
#[test]
|
229
213
|
fn proper_propagation() {
|
230
|
-
let expression = serde_json::json!({
|
231
|
-
"and": [
|
232
|
-
{ "literal": "this" },
|
233
|
-
{ "literal": "and" },
|
234
|
-
{ "literal": "that"},
|
235
|
-
],
|
236
|
-
});
|
237
214
|
#[allow(deprecated)]
|
238
215
|
let request = SearchRequest {
|
239
|
-
filter: Some(Filter {
|
240
|
-
field_labels: vec!["this".to_string()],
|
241
|
-
paragraph_labels: vec!["and".to_string(), "that".to_string()],
|
242
|
-
labels_expression: expression.to_string(),
|
243
|
-
keywords_expression: "".to_string(),
|
244
|
-
}),
|
245
216
|
result_per_page: 10,
|
246
217
|
vector: vec![1.0],
|
247
218
|
paragraph: true,
|
219
|
+
field_filter: Some(FilterExpression {
|
220
|
+
expr: Some(Expr::Facet(FacetFilter {
|
221
|
+
facet: "this".into(),
|
222
|
+
})),
|
223
|
+
}),
|
224
|
+
paragraph_filter: Some(FilterExpression {
|
225
|
+
expr: Some(Expr::BoolAnd(FilterExpressionList {
|
226
|
+
operands: vec![
|
227
|
+
FilterExpression {
|
228
|
+
expr: Some(Expr::Facet(FacetFilter {
|
229
|
+
facet: "and".into(),
|
230
|
+
})),
|
231
|
+
},
|
232
|
+
FilterExpression {
|
233
|
+
expr: Some(Expr::Facet(FacetFilter {
|
234
|
+
facet: "that".into(),
|
235
|
+
})),
|
236
|
+
},
|
237
|
+
],
|
238
|
+
})),
|
239
|
+
}),
|
248
240
|
..Default::default()
|
249
241
|
};
|
250
242
|
let query_plan = build_query_plan(request).unwrap();
|
@@ -29,10 +29,7 @@ use tracing::{instrument, Span};
|
|
29
29
|
|
30
30
|
use crate::errors::{NidxError, NidxResult};
|
31
31
|
|
32
|
-
use super::{
|
33
|
-
index_cache::IndexCache,
|
34
|
-
query_planner::{filter_to_boolean_expression, old_filter_compatibility::filter_from_suggest_request},
|
35
|
-
};
|
32
|
+
use super::{index_cache::IndexCache, query_planner::filter_to_boolean_expression};
|
36
33
|
|
37
34
|
/// Max number of words accepted as a suggest query. This is useful for
|
38
35
|
/// compounds with semantic meaning (like a name and a surname) but can add
|
@@ -99,18 +96,7 @@ fn blocking_suggest(
|
|
99
96
|
|
100
97
|
let mut paragraph_request = None;
|
101
98
|
if suggest_paragraphs {
|
102
|
-
let
|
103
|
-
if let Some(expr) = filter_expression {
|
104
|
-
if request.field_filter.is_some() {
|
105
|
-
return Err(anyhow::anyhow!("Cannot specify old and new filters in the same request"));
|
106
|
-
}
|
107
|
-
let prefilter = PreFilterRequest {
|
108
|
-
security: None,
|
109
|
-
filter_expression: Some(expr),
|
110
|
-
};
|
111
|
-
|
112
|
-
prefiltered = text_searcher.prefilter(&prefilter)?;
|
113
|
-
} else if let Some(expr) = &request.field_filter {
|
99
|
+
if let Some(expr) = &request.field_filter {
|
114
100
|
let prefilter = PreFilterRequest {
|
115
101
|
security: None,
|
116
102
|
filter_expression: Some(expr.clone()),
|
@@ -23,11 +23,13 @@ mod common;
|
|
23
23
|
use std::collections::HashMap;
|
24
24
|
|
25
25
|
use common::services::NidxFixture;
|
26
|
+
use nidx_protos::filter_expression::date_range_filter::DateField;
|
27
|
+
use nidx_protos::filter_expression::{DateRangeFilter, Expr, FilterExpressionList};
|
26
28
|
use nidx_protos::prost_types::Timestamp;
|
27
29
|
use nidx_protos::resource::ResourceStatus;
|
28
30
|
use nidx_protos::{
|
29
|
-
IndexMetadata, IndexParagraph, IndexParagraphs, NewShardRequest, Resource, ResourceId,
|
30
|
-
|
31
|
+
FilterExpression, IndexMetadata, IndexParagraph, IndexParagraphs, NewShardRequest, Resource, ResourceId,
|
32
|
+
SearchRequest, TextInformation, VectorIndexConfig, VectorSentence, VectorsetSentences,
|
31
33
|
};
|
32
34
|
use sqlx::PgPool;
|
33
35
|
use tonic::Request;
|
@@ -138,7 +140,6 @@ async fn test_date_range_search(pool: PgPool) -> Result<(), Box<dyn std::error::
|
|
138
140
|
let request = SearchRequest {
|
139
141
|
shard: shard_id.clone(),
|
140
142
|
order: None,
|
141
|
-
timestamps: None,
|
142
143
|
vectorset: "english".to_string(),
|
143
144
|
vector: vec![4.0, 6.0, 7.0],
|
144
145
|
page_number: 0,
|
@@ -158,11 +159,25 @@ async fn test_date_range_search(pool: PgPool) -> Result<(), Box<dyn std::error::
|
|
158
159
|
|
159
160
|
// Time range allows everything
|
160
161
|
let mut request_all_range = request.clone();
|
161
|
-
request_all_range.
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
162
|
+
request_all_range.field_filter = Some(FilterExpression {
|
163
|
+
expr: Some(Expr::BoolAnd(FilterExpressionList {
|
164
|
+
operands: vec![
|
165
|
+
FilterExpression {
|
166
|
+
expr: Some(Expr::Date(DateRangeFilter {
|
167
|
+
field: DateField::Modified.into(),
|
168
|
+
since: Some(base_time),
|
169
|
+
until: None,
|
170
|
+
})),
|
171
|
+
},
|
172
|
+
FilterExpression {
|
173
|
+
expr: Some(Expr::Date(DateRangeFilter {
|
174
|
+
field: DateField::Created.into(),
|
175
|
+
since: Some(base_time),
|
176
|
+
until: None,
|
177
|
+
})),
|
178
|
+
},
|
179
|
+
],
|
180
|
+
})),
|
166
181
|
});
|
167
182
|
let result = fixture.searcher_client.search(request_all_range).await.unwrap();
|
168
183
|
let result = result.into_inner();
|
@@ -171,11 +186,25 @@ async fn test_date_range_search(pool: PgPool) -> Result<(), Box<dyn std::error::
|
|
171
186
|
|
172
187
|
// Time range allows only second batch
|
173
188
|
let mut request_second_batch = request.clone();
|
174
|
-
request_second_batch.
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
189
|
+
request_second_batch.field_filter = Some(FilterExpression {
|
190
|
+
expr: Some(Expr::BoolAnd(FilterExpressionList {
|
191
|
+
operands: vec![
|
192
|
+
FilterExpression {
|
193
|
+
expr: Some(Expr::Date(DateRangeFilter {
|
194
|
+
field: DateField::Modified.into(),
|
195
|
+
since: Some(base_time_plus_one),
|
196
|
+
until: None,
|
197
|
+
})),
|
198
|
+
},
|
199
|
+
FilterExpression {
|
200
|
+
expr: Some(Expr::Date(DateRangeFilter {
|
201
|
+
field: DateField::Created.into(),
|
202
|
+
since: Some(base_time_plus_one),
|
203
|
+
until: None,
|
204
|
+
})),
|
205
|
+
},
|
206
|
+
],
|
207
|
+
})),
|
179
208
|
});
|
180
209
|
let result = fixture.searcher_client.search(request_second_batch).await.unwrap();
|
181
210
|
let result = result.into_inner();
|
@@ -184,11 +213,16 @@ async fn test_date_range_search(pool: PgPool) -> Result<(), Box<dyn std::error::
|
|
184
213
|
|
185
214
|
// Time range allows only second batch, but with modified only
|
186
215
|
let mut request_second_batch = request.clone();
|
187
|
-
request_second_batch.
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
216
|
+
request_second_batch.field_filter = Some(FilterExpression {
|
217
|
+
expr: Some(Expr::BoolAnd(FilterExpressionList {
|
218
|
+
operands: vec![FilterExpression {
|
219
|
+
expr: Some(Expr::Date(DateRangeFilter {
|
220
|
+
field: DateField::Modified.into(),
|
221
|
+
since: Some(base_time_plus_one),
|
222
|
+
until: None,
|
223
|
+
})),
|
224
|
+
}],
|
225
|
+
})),
|
192
226
|
});
|
193
227
|
let result = fixture.searcher_client.search(request_second_batch).await.unwrap();
|
194
228
|
let result = result.into_inner();
|
@@ -200,11 +234,25 @@ async fn test_date_range_search(pool: PgPool) -> Result<(), Box<dyn std::error::
|
|
200
234
|
|
201
235
|
// Time range does not match any field, therefore the response has no results
|
202
236
|
let mut request_second_batch = request.clone();
|
203
|
-
request_second_batch.
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
237
|
+
request_second_batch.field_filter = Some(FilterExpression {
|
238
|
+
expr: Some(Expr::BoolAnd(FilterExpressionList {
|
239
|
+
operands: vec![
|
240
|
+
FilterExpression {
|
241
|
+
expr: Some(Expr::Date(DateRangeFilter {
|
242
|
+
field: DateField::Modified.into(),
|
243
|
+
since: Some(base_time_plus_two),
|
244
|
+
until: None,
|
245
|
+
})),
|
246
|
+
},
|
247
|
+
FilterExpression {
|
248
|
+
expr: Some(Expr::Date(DateRangeFilter {
|
249
|
+
field: DateField::Created.into(),
|
250
|
+
since: Some(base_time_plus_two),
|
251
|
+
until: None,
|
252
|
+
})),
|
253
|
+
},
|
254
|
+
],
|
255
|
+
})),
|
208
256
|
});
|
209
257
|
let result = fixture.searcher_client.search(request_second_batch).await.unwrap();
|
210
258
|
let result = result.into_inner();
|
@@ -215,11 +263,25 @@ async fn test_date_range_search(pool: PgPool) -> Result<(), Box<dyn std::error::
|
|
215
263
|
|
216
264
|
// Multiple timestamps are parsed as AND conditions
|
217
265
|
let mut request_second_batch = request.clone();
|
218
|
-
request_second_batch.
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
266
|
+
request_second_batch.field_filter = Some(FilterExpression {
|
267
|
+
expr: Some(Expr::BoolAnd(FilterExpressionList {
|
268
|
+
operands: vec![
|
269
|
+
FilterExpression {
|
270
|
+
expr: Some(Expr::Date(DateRangeFilter {
|
271
|
+
field: DateField::Modified.into(),
|
272
|
+
since: Some(base_time_plus_one),
|
273
|
+
until: None,
|
274
|
+
})),
|
275
|
+
},
|
276
|
+
FilterExpression {
|
277
|
+
expr: Some(Expr::Date(DateRangeFilter {
|
278
|
+
field: DateField::Created.into(),
|
279
|
+
since: Some(base_time_plus_two),
|
280
|
+
until: None,
|
281
|
+
})),
|
282
|
+
},
|
283
|
+
],
|
284
|
+
})),
|
223
285
|
});
|
224
286
|
let result = fixture.searcher_client.search(request_second_batch).await.unwrap();
|
225
287
|
let result = result.into_inner();
|