nidx-binding 6.3.1.post72__tar.gz → 6.3.1.post78__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.post72 → nidx_binding-6.3.1.post78}/PKG-INFO +1 -1
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/src/query_io.rs +3 -3
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/src/request_types.rs +2 -2
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/src/search_query.rs +1 -1
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_protos/pyproject.toml +1 -1
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_relation/src/graph_query_parser.rs +104 -48
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_relation/src/reader.rs +21 -31
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_types/src/query_language.rs +6 -6
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/data_point_provider/reader.rs +2 -2
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/query_io.rs +3 -3
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/request_types.rs +2 -2
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/pyproject.toml +1 -1
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/searcher/query_language.rs +1 -1
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/searcher/query_planner.rs +3 -3
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/tests/test_search_relations.rs +154 -189
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-0cfce9b29547f8f5bafa6e440f86103be7b8c4ad2fd92db9ac223f4efbe23d10.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-1a561eed00f3dbe868bf5030059793300209179dc8fb73e4b57a54b5e81262fe.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-1d3fca2682e25a01143da92285297f134a6a105a96f64d87e0db3abb219855e4.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-249b3b57c27a71baa823f1fe0f0bba9c9af36f61c28f731e58beea60ec48e687.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-24cb6b683daa42d7125f862e25943ab4be7bf275cd8739f8da4859d701795e1a.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-263c8fce6db5b03bbd012fafdba6943cbee6ed7eb8976cdef4f5b01dde7ca6fd.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-2a5d92fb1638df830a4477a7cdf24e6db6b43034b7bbe74fdfb63e8afe2c4071.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-2b065a363f58caed60e3706603c1260dbf5a4c795604a5b68edda22eb07fec1b.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-3fc3cb39934683de8cd475ce1368c8373453eb1e01f81587d66b9d14b109ce6e.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-48f33b77b7c1633467b0b2efcaa1d3c207e7757e4f1d83b40d15e6ca365f7771.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-4ae09f2c08e2f324bee01bb8487a8f37678a1c5e9d327339235c50d4921a8949.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-4d7a76fa413c9ef0ce2a47ac7bb7e01d3e6a2aabded9487d21010a53efee8852.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-4fcbdd6657c7dc9b60b3a563dd41711b3dbcf72ce063427b7a01f8cddf34c244.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-577109ac00ccfbd38ecaccab94116f2f46a4caf5612afa372cded197123c1e08.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-5db25f97d8578d6d78f2f6bd4b72cc82a9b1b82805c6422d967ac63b20d99db4.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-5ec3233a3a23e926055056d46bdde17836a633066dbb5f349502648cd3ea9a60.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-66edb6ea424d8681927dcddb6bac5f1239175f4775d1f40417ba15054b0c6f19.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-6f9c6d201c1b5712efb68c363bffd3e0169c11f2a8f925e8cd4e8808599ff7b4.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-733c3ebacc86f444bf5e2dd79ade660c291e88a00fc09b722f6e2e191545874c.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-77a245aed9f6f8b9fc643efbd4b1e2e8e99bbba085e3e75a4f29321cd7b2a25c.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-7a3bf27c330c468a596e8a297cf7d8b192e31e67ecc5177c1267f579e8e247c7.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-7a7e59e47b30b12237511fd3d7da2d17b0471ad2b006af48d6a6f587c779692b.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-7dcbb33312cc9f11ae3a6d73b1ace017a9f19a8bf8f10304fc57977c8efeadff.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-7efa7c0d747afc4b6aed0586ff846c27839c3213ff7ee9f30c89b0d0f17e60e3.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-8493140d788604d498a4e48da4158708572ccc9d60185290a00d549cc84533db.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-8493bb0059b013eaca42fd10cd7d04f0d06a8acaed379eff0d23f3229edde9ee.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-87996b3d6c7a2195438d7038015b06949102bce8c7b8cd8db1f83aaf23cbe489.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-8f096d8171b89f9615d18f95d696dc9e4fb3674e103161a713cdc806f7a68506.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-917732a56ee04bf3a6e127319dda8225210869c82f9828d878162394dba4e078.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-95fe4ef93ee90733db1b67ed7987f80b5aac792f1590b979c68b418d1599eb98.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-9b67658569b343d8b4b61ae0a7dc721f367f2ba33c7b69b9e68bfd5c9bff5206.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-9c8062ea55d070afef68309e58fa987eb37fda44e1efbf68c8ba2af7846cc968.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-a06e1d9f6f95e4c4c2b98310ebddcc9d963cc033582bf2e945e8bf3a301b4247.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-a55265c9b07bd1399961a6f1e757201fd0eebe868ddaf96437111113d80fce92.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-a891a37be5c2d7cce775c2dd33726b0318fd3839beab222a1b22bc6174604207.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-a945191bb4b3e37d6823ed3ad499339d007d69983105de8567777d9daf517b28.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-abe9f7832f2bd799ac44008da031e8d8ab52d4f5fbfc2a7e3974e8873bae55b2.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-aca588cca57a85e4d7fcc40c23cd87e57d53d11ca550d78e7e3d5e39e524fcd3.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-b02f8aafc00a7724510772ac41269e368c5bccf03ef7b4590e0ef6fd1a1bf64f.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-b742e17cabe2d64617e9aa64bafc782172f7a4f8023d1b54f952a0fb39f6b2b8.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-b94e349dbc0daec57f8f8f6e9e2dffb06100b1bb2b41d297c9f3b191da37a83d.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-bd9afa22994aba671dbf7b5f89b53c2ee02f53c0442a81265786a6d52d08512f.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-be60554eca98a5899efc6b49785cecd6444a6d39afed9e4a884ce2dbf162012c.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-bf49702b506c9a1650ece1f8e8d9f14834a902f8caefafe30ded55e2790f2188.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-bfb8ae2e860e451b0868a7b1b50a451d998b2105f9fdfd307b26a1775d145e9f.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-bfcd21ed704cd305db5c17fcdec7d92aa4ac501913c9c9514d8ff92928c0c7e7.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-c3ab694650f49a75b146fb877a92e48c4f20f0d99f70f8ec859fbb763b01a1e5.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-c55542bb9fae544d87fae6f30e0fe8a9088d12075f4442ab4fe2fcd05e472234.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-cb29a6556d35ac630ee0aa885dd7341cf9573bd3efd216ff8a887b87686b03db.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-d0a1f341a89f5f14696b10baa72db9d95551c2b7e5fc67308fd52dc03dd98a92.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-d2ad0a0ca2649c9e4873cfcc1fc66d2d07cc45d0f65c560b06d7b5f592f4fa8a.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-d6cfe78eb635ba0b89ca4021a4dc8182d18ab5b197f30149cd28488eba4c1df5.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-d729b56dea00e49dcdba8cf0001e2811da27351eabe98212db3b589f18fc6f32.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-d9658bfd4e7170b41d03f2ddf2446d0bf54171c0d39d53bf20af2b8437f2ec48.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-dbba7b3d3289425bae711aedbf73fbc3699f857f86f84d95c3b556d05c5658b0.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-dcb96b649d6d63a58efd5d445453a4f3d7869a56ff714b69bedf3d616a0473ca.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-ebd876fbf5362a5900e75bc05f2f11c73c406ef7da4e95097fc6a1c3d1b8bc54.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-eef5cc6bce1cc14eba8f3e68971724ef181e88cffcedd74673615f2026b89a62.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/.sqlx/query-ef56d5fefc5774040d1ee397beadb475f6af02768c22f0e583c74062e2e821ce.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/Cargo.lock +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/Cargo.toml +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/README.md +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/migrations/20241007163501_initial.sql +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/migrations/20241211120039_merge_job_priority.sql +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/migrations/20241211121159_basic_indexes.sql +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/migrations/20241212151105_check_segment_records.sql +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/migrations/20250110145554_in_flight_messages.sql +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_binding/Cargo.toml +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_binding/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/Cargo.toml +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/src/fuzzy_query.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/src/reader.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/src/schema.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/src/search_response.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/src/set_query.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/src/stop_words.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/README.md +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/ar.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/az.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/bn.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/ca.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/ch.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/da.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/de.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/el.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/en.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/es.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/eu.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/extract.py +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/fi.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/fr.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/he.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/hu.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/id.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/it.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/kk.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/ne.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/nl.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/no.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/pt.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/ro.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/ru.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/sl.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/sv.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/tg.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/stop_words/tr.json +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_paragraph/tests/reader.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_protos/Cargo.toml +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_protos/build.py +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_protos/build.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_protos/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_protos/src/nidx.proto +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_relation/Cargo.toml +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_relation/src/io_maps.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_relation/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_relation/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_relation/src/schema.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_relation/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_relation/tests/test_graph_search.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_relation/tests/test_reader.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_relation/tests/test_writer.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_tantivy/Cargo.toml +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_tantivy/src/index_reader.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_tantivy/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_tests/Cargo.toml +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_tests/src/graph.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_tests/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_text/Cargo.toml +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_text/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_text/src/prefilter.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_text/src/query_io.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_text/src/reader.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_text/src/request_types.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_text/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_text/src/schema.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_text/src/search_query.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_text/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_text/tests/test_flow.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_text/tests/test_search.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_text/tests/test_streaming.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_types/Cargo.toml +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_types/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_types/src/prefilter.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/Cargo.toml +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/config.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/data_point/disk_hnsw.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/data_point/mod.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/data_point/node.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/data_point/ops_hnsw.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/data_point/params.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/data_point/ram_hnsw.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/data_point/tests.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/data_point_provider/mod.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/data_types/data_store.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/data_types/mod.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/data_types/trie.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/data_types/trie_ram.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/formula/mod.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/indexer.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/inverted_index/fst_index.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/inverted_index/map.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/inverted_index.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/utils.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/vector_types/dense_f32.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/src/vector_types/mod.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/tests/test_basic_search.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_vector/tests/test_hidden.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/api/grpc.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/api/shards.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/api.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/control.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/errors.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/grpc_server.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/import_export.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/indexer.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/lib.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/main.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/metadata/deletion.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/metadata/index.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/metadata/index_request.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/metadata/merge_job.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/metadata/segment.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/metadata/shard.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/metadata.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/metrics.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/scheduler/audit_task.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/scheduler/log_merge.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/scheduler/merge_task.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/scheduler/metrics_task.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/scheduler/purge_tasks.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/scheduler/vector_merge.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/scheduler.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/searcher/grpc.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/searcher/index_cache.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/searcher/shard_search.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/searcher/shard_selector.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/searcher/shard_suggest.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/searcher/streams.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/searcher/sync.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/searcher.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/segment_store.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/settings.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/telemetry/duration_layer.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/telemetry/log_format.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/telemetry/middleware.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/telemetry.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/tool.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/src/worker.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/tests/common/services.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/tests/test_date_range_search.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/tests/test_search_filtering.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/tests/test_search_sorting.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/tests/test_searcher_cluster.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/tests/test_security_search.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/tests/test_shards.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/tests/test_shards_api.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/tests/test_suggest.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/tests/test_synced_searcher.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/tests/test_vector_normalization.rs +0 -0
- {nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/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.post78
|
4
4
|
Classifier: Programming Language :: Rust
|
5
5
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
6
6
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
@@ -29,7 +29,7 @@ fn translate_literal(literal: &str, schema: &ParagraphSchema) -> Box<dyn Query>
|
|
29
29
|
Box::new(TermQuery::new(term, IndexRecordOption::Basic))
|
30
30
|
}
|
31
31
|
|
32
|
-
fn translate_not(inner: &BooleanExpression
|
32
|
+
fn translate_not(inner: &BooleanExpression<String>, schema: &ParagraphSchema) -> Box<dyn Query> {
|
33
33
|
let mut operands = Vec::with_capacity(2);
|
34
34
|
|
35
35
|
// Check the following issue to see why the additional AllQuery is needed:
|
@@ -43,7 +43,7 @@ fn translate_not(inner: &BooleanExpression, schema: &ParagraphSchema) -> Box<dyn
|
|
43
43
|
Box::new(BooleanQuery::new(operands))
|
44
44
|
}
|
45
45
|
|
46
|
-
fn translate_operation(operation: &BooleanOperation
|
46
|
+
fn translate_operation(operation: &BooleanOperation<String>, schema: &ParagraphSchema) -> Box<dyn Query> {
|
47
47
|
let operator = match operation.operator {
|
48
48
|
Operator::And => Occur::Must,
|
49
49
|
Operator::Or => Occur::Should,
|
@@ -59,7 +59,7 @@ fn translate_operation(operation: &BooleanOperation, schema: &ParagraphSchema) -
|
|
59
59
|
Box::new(BooleanQuery::new(operands))
|
60
60
|
}
|
61
61
|
|
62
|
-
pub fn translate_expression(expression: &BooleanExpression
|
62
|
+
pub fn translate_expression(expression: &BooleanExpression<String>, schema: &ParagraphSchema) -> Box<dyn Query> {
|
63
63
|
match expression {
|
64
64
|
BooleanExpression::Not(inner) => translate_not(inner, schema),
|
65
65
|
BooleanExpression::Literal(literal) => translate_literal(literal, schema),
|
@@ -35,14 +35,14 @@ pub struct ParagraphSearchRequest {
|
|
35
35
|
pub min_score: f32,
|
36
36
|
pub security: Option<nidx_protos::utils::Security>,
|
37
37
|
|
38
|
-
pub filtering_formula: Option<BooleanExpression
|
38
|
+
pub filtering_formula: Option<BooleanExpression<String>>,
|
39
39
|
/// Whether to do an OR/AND between prefilter results and filtering_formula
|
40
40
|
pub filter_or: bool,
|
41
41
|
}
|
42
42
|
|
43
43
|
pub struct ParagraphSuggestRequest {
|
44
44
|
pub body: String,
|
45
|
-
pub filtering_formula: Option<BooleanExpression
|
45
|
+
pub filtering_formula: Option<BooleanExpression<String>>,
|
46
46
|
/// Whether to do an OR/AND between prefilter results and filtering_formula
|
47
47
|
pub filter_or: bool,
|
48
48
|
}
|
@@ -262,7 +262,7 @@ fn preprocess_raw_query(query: &str, tc: &mut TermCollector) -> ProcessedQuery {
|
|
262
262
|
fn filter_query(
|
263
263
|
schema: &ParagraphSchema,
|
264
264
|
prefilter: &PrefilterResult,
|
265
|
-
paragraph_formula: &Option<BooleanExpression
|
265
|
+
paragraph_formula: &Option<BooleanExpression<String>>,
|
266
266
|
filter_or: bool,
|
267
267
|
) -> Option<Box<dyn Query>> {
|
268
268
|
let mut filter_terms = vec![];
|
@@ -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.post78"
|
8
8
|
license = { text = "AGPL" }
|
9
9
|
description = "Protobuf definitions for nucliadb/nidx"
|
10
10
|
authors = [ { name = "Nuclia", email = "nucliadb@nuclia.com" }]
|
{nidx_binding-6.3.1.post72 → nidx_binding-6.3.1.post78}/nidx_relation/src/graph_query_parser.rs
RENAMED
@@ -18,12 +18,15 @@
|
|
18
18
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
19
|
//
|
20
20
|
use nidx_protos::relation_node::NodeType;
|
21
|
+
use nidx_types::query_language::{BooleanExpression, BooleanOperation, Operator};
|
21
22
|
use tantivy::query::{AllQuery, BooleanQuery, FuzzyTermQuery, Occur, Query, TermQuery};
|
22
23
|
use tantivy::schema::{Field, IndexRecordOption};
|
23
24
|
|
24
25
|
use crate::schema::Schema;
|
25
26
|
use crate::{io_maps, schema};
|
26
27
|
|
28
|
+
const DEFAULT_NODE_VALUE_FUZZY_DISTANCE: u8 = 2;
|
29
|
+
|
27
30
|
#[derive(Clone)]
|
28
31
|
pub struct FuzzyTerm {
|
29
32
|
pub value: String,
|
@@ -46,7 +49,6 @@ pub struct Node {
|
|
46
49
|
|
47
50
|
#[derive(Default, Clone)]
|
48
51
|
pub struct Relation {
|
49
|
-
// TODO: fuzzy
|
50
52
|
pub value: Option<String>,
|
51
53
|
}
|
52
54
|
|
@@ -105,6 +107,8 @@ pub enum GraphQuery {
|
|
105
107
|
PathQuery(PathQuery),
|
106
108
|
}
|
107
109
|
|
110
|
+
pub struct BoolGraphQuery(BooleanExpression<GraphQuery>);
|
111
|
+
|
108
112
|
#[derive(Clone, Copy)]
|
109
113
|
struct NodeSchemaFields {
|
110
114
|
normalized_value: Field,
|
@@ -121,6 +125,33 @@ impl GraphQueryParser {
|
|
121
125
|
Self { schema: Schema::new() }
|
122
126
|
}
|
123
127
|
|
128
|
+
pub fn parse_bool(&self, query: BoolGraphQuery) -> Box<dyn Query> {
|
129
|
+
self.inner_parse_bool(query.0)
|
130
|
+
}
|
131
|
+
|
132
|
+
fn inner_parse_bool(&self, query: BooleanExpression<GraphQuery>) -> Box<dyn Query> {
|
133
|
+
match query {
|
134
|
+
BooleanExpression::Literal(query) => self.parse(query),
|
135
|
+
BooleanExpression::Not(subquery) => {
|
136
|
+
let mut subqueries = vec![];
|
137
|
+
subqueries.push((Occur::Must, Box::new(AllQuery) as Box<dyn Query>));
|
138
|
+
subqueries.push((Occur::MustNot, self.inner_parse_bool(*subquery)));
|
139
|
+
Box::new(BooleanQuery::new(subqueries))
|
140
|
+
}
|
141
|
+
BooleanExpression::Operation(operation) => {
|
142
|
+
let mut subqueries = vec![];
|
143
|
+
let occur = match operation.operator {
|
144
|
+
Operator::And => Occur::Must,
|
145
|
+
Operator::Or => Occur::Should,
|
146
|
+
};
|
147
|
+
for expression in operation.operands {
|
148
|
+
subqueries.push((occur, self.inner_parse_bool(expression)));
|
149
|
+
}
|
150
|
+
Box::new(BooleanQuery::new(subqueries))
|
151
|
+
}
|
152
|
+
}
|
153
|
+
}
|
154
|
+
|
124
155
|
pub fn parse(&self, query: GraphQuery) -> Box<dyn Query> {
|
125
156
|
// REVIEW: if at some point we only want to return what the query really asks (nodes,
|
126
157
|
// relations or paths), we may want to return the query and some kind of response builder
|
@@ -425,51 +456,79 @@ impl From<&str> for Term {
|
|
425
456
|
}
|
426
457
|
}
|
427
458
|
|
428
|
-
impl TryFrom<&nidx_protos::graph_query::
|
459
|
+
impl TryFrom<&nidx_protos::graph_query::PathQuery> for BoolGraphQuery {
|
429
460
|
type Error = anyhow::Error;
|
430
461
|
|
431
|
-
fn try_from(value: &nidx_protos::graph_query::
|
432
|
-
let
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
462
|
+
fn try_from(value: &nidx_protos::graph_query::PathQuery) -> Result<Self, Self::Error> {
|
463
|
+
let bool_expr = match &value.query {
|
464
|
+
Some(query) => match query {
|
465
|
+
nidx_protos::graph_query::path_query::Query::Path(path) => {
|
466
|
+
let source = match &path.source {
|
467
|
+
Some(source_pb) => Node::try_from(source_pb)?,
|
468
|
+
None => Node::default(),
|
469
|
+
};
|
470
|
+
let relation = match &path.relation {
|
471
|
+
Some(relation_pb) => Relation::try_from(relation_pb)?,
|
472
|
+
None => Relation::default(),
|
473
|
+
};
|
474
|
+
let destination = match &path.destination {
|
475
|
+
Some(destination_pb) => Node::try_from(destination_pb)?,
|
476
|
+
None => Node::default(),
|
477
|
+
};
|
478
|
+
|
479
|
+
let path_query = if path.undirected {
|
480
|
+
GraphQuery::PathQuery(PathQuery::UndirectedPath((
|
481
|
+
Expression::Value(source),
|
482
|
+
Expression::Value(relation),
|
483
|
+
Expression::Value(destination),
|
484
|
+
)))
|
485
|
+
} else {
|
486
|
+
GraphQuery::PathQuery(PathQuery::DirectedPath((
|
487
|
+
Expression::Value(source),
|
488
|
+
Expression::Value(relation),
|
489
|
+
Expression::Value(destination),
|
490
|
+
)))
|
491
|
+
};
|
492
|
+
|
493
|
+
BooleanExpression::Literal(path_query)
|
494
|
+
}
|
437
495
|
|
438
|
-
|
439
|
-
|
440
|
-
|
496
|
+
nidx_protos::graph_query::path_query::Query::BoolNot(bool_not) => {
|
497
|
+
let subquery = BoolGraphQuery::try_from(bool_not.as_ref())?.0;
|
498
|
+
BooleanExpression::Not(Box::new(subquery))
|
499
|
+
}
|
441
500
|
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
Some(destination_pb) => Node::try_from(destination_pb)?,
|
453
|
-
None => Node::default(),
|
454
|
-
};
|
501
|
+
nidx_protos::graph_query::path_query::Query::BoolAnd(bool_and) => {
|
502
|
+
BooleanExpression::Operation(BooleanOperation {
|
503
|
+
operator: Operator::And,
|
504
|
+
operands: bool_and
|
505
|
+
.operands
|
506
|
+
.iter()
|
507
|
+
.map(|o| BoolGraphQuery::try_from(o).map(|x| x.0))
|
508
|
+
.collect::<anyhow::Result<Vec<_>>>()?,
|
509
|
+
})
|
510
|
+
}
|
455
511
|
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
Expression::Value(relation),
|
466
|
-
Expression::Value(destination),
|
467
|
-
)))
|
512
|
+
nidx_protos::graph_query::path_query::Query::BoolOr(bool_or) => {
|
513
|
+
BooleanExpression::Operation(BooleanOperation {
|
514
|
+
operator: Operator::Or,
|
515
|
+
operands: bool_or
|
516
|
+
.operands
|
517
|
+
.iter()
|
518
|
+
.map(|o| BoolGraphQuery::try_from(o).map(|x| x.0))
|
519
|
+
.collect::<anyhow::Result<Vec<_>>>()?,
|
520
|
+
})
|
468
521
|
}
|
469
|
-
}
|
522
|
+
},
|
523
|
+
|
524
|
+
None => BooleanExpression::Literal(GraphQuery::PathQuery(PathQuery::UndirectedPath((
|
525
|
+
Expression::Value(Node::default()),
|
526
|
+
Expression::Value(Relation::default()),
|
527
|
+
Expression::Value(Node::default()),
|
528
|
+
)))),
|
470
529
|
};
|
471
530
|
|
472
|
-
Ok(
|
531
|
+
Ok(BoolGraphQuery(bool_expr))
|
473
532
|
}
|
474
533
|
}
|
475
534
|
|
@@ -477,16 +536,13 @@ impl TryFrom<&nidx_protos::graph_query::Node> for Node {
|
|
477
536
|
type Error = anyhow::Error;
|
478
537
|
|
479
538
|
fn try_from(node_pb: &nidx_protos::graph_query::Node) -> Result<Self, Self::Error> {
|
480
|
-
let value = node_pb.value.clone().map(|value| {
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
} else {
|
488
|
-
Term::Exact(value)
|
489
|
-
}
|
539
|
+
let value = node_pb.value.clone().map(|value| match node_pb.match_kind() {
|
540
|
+
nidx_protos::graph_query::node::MatchKind::Exact => Term::Exact(value),
|
541
|
+
nidx_protos::graph_query::node::MatchKind::Fuzzy => Term::Fuzzy(FuzzyTerm {
|
542
|
+
value: value,
|
543
|
+
fuzzy_distance: DEFAULT_NODE_VALUE_FUZZY_DISTANCE,
|
544
|
+
is_prefix: true,
|
545
|
+
}),
|
490
546
|
});
|
491
547
|
let node_type = node_pb.node_type.map(NodeType::try_from).transpose()?;
|
492
548
|
let node_subtype = node_pb.node_subtype.clone();
|
@@ -31,7 +31,7 @@ use tantivy::query::{BooleanQuery, Occur, Query};
|
|
31
31
|
use tantivy::{DocAddress, Index, IndexReader, Searcher};
|
32
32
|
|
33
33
|
use crate::graph_query_parser::{
|
34
|
-
Expression, FuzzyTerm, GraphQuery, GraphQueryParser, Node, NodeQuery,
|
34
|
+
BoolGraphQuery, Expression, FuzzyTerm, GraphQuery, GraphQueryParser, Node, NodeQuery, Term,
|
35
35
|
};
|
36
36
|
use crate::schema::Schema;
|
37
37
|
use crate::{io_maps, schema};
|
@@ -71,14 +71,14 @@ impl RelationsReaderService {
|
|
71
71
|
let Some(query) = &request.query else {
|
72
72
|
return Ok(GraphSearchResponse::default());
|
73
73
|
};
|
74
|
-
let Some(query) = &query.
|
74
|
+
let Some(query) = &query.path else {
|
75
75
|
return Ok(GraphSearchResponse::default());
|
76
76
|
};
|
77
77
|
|
78
78
|
// Convert proto to tantivy query
|
79
|
-
let query =
|
79
|
+
let query = BoolGraphQuery::try_from(query)?;
|
80
80
|
let parser = GraphQueryParser::new();
|
81
|
-
let index_query = parser.
|
81
|
+
let index_query = parser.parse_bool(query);
|
82
82
|
|
83
83
|
// Tantivy searcher query
|
84
84
|
let collector = TopDocs::with_limit(request.top_k as usize);
|
@@ -192,15 +192,11 @@ impl RelationsReaderService {
|
|
192
192
|
for entry_point in bfs_request.entry_points.iter() {
|
193
193
|
statements.push((
|
194
194
|
Occur::Should,
|
195
|
-
query_parser.parse(GraphQuery::
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
}),
|
201
|
-
Expression::Value(Relation::default()),
|
202
|
-
Expression::Value(Node::default()),
|
203
|
-
)))),
|
195
|
+
query_parser.parse(GraphQuery::NodeQuery(NodeQuery::Node(Expression::Value(Node {
|
196
|
+
value: Some(entry_point.value.clone().into()),
|
197
|
+
node_type: Some(entry_point.ntype()),
|
198
|
+
node_subtype: Some(entry_point.subtype.clone()),
|
199
|
+
})))),
|
204
200
|
));
|
205
201
|
}
|
206
202
|
|
@@ -215,20 +211,16 @@ impl RelationsReaderService {
|
|
215
211
|
}
|
216
212
|
statements.push((
|
217
213
|
Occur::MustNot,
|
218
|
-
query_parser.parse(GraphQuery::
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
.
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
.collect(),
|
229
|
-
),
|
230
|
-
Expression::Value(Relation::default()),
|
231
|
-
Expression::Value(Node::default()),
|
214
|
+
query_parser.parse(GraphQuery::NodeQuery(NodeQuery::Node(Expression::Or(
|
215
|
+
deleted_nodes
|
216
|
+
.node_values
|
217
|
+
.iter()
|
218
|
+
.map(|deleted_entity_value| Node {
|
219
|
+
value: Some(deleted_entity_value.clone().into()),
|
220
|
+
node_subtype: Some(deleted_nodes.node_subtype.clone()),
|
221
|
+
..Default::default()
|
222
|
+
})
|
223
|
+
.collect(),
|
232
224
|
)))),
|
233
225
|
));
|
234
226
|
}
|
@@ -247,10 +239,8 @@ impl RelationsReaderService {
|
|
247
239
|
if excluded_subtypes.len() > 0 {
|
248
240
|
statements.push((
|
249
241
|
Occur::MustNot,
|
250
|
-
query_parser.parse(GraphQuery::
|
251
|
-
|
252
|
-
Expression::Value(Relation::default()),
|
253
|
-
Expression::Value(Node::default()),
|
242
|
+
query_parser.parse(GraphQuery::NodeQuery(NodeQuery::Node(Expression::Or(
|
243
|
+
excluded_subtypes,
|
254
244
|
)))),
|
255
245
|
))
|
256
246
|
}
|
@@ -31,14 +31,14 @@ pub enum Operator {
|
|
31
31
|
}
|
32
32
|
|
33
33
|
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
|
34
|
-
pub struct BooleanOperation {
|
34
|
+
pub struct BooleanOperation<T> {
|
35
35
|
pub operator: Operator,
|
36
|
-
pub operands: Vec<BooleanExpression
|
36
|
+
pub operands: Vec<BooleanExpression<T>>,
|
37
37
|
}
|
38
38
|
|
39
39
|
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
|
40
|
-
pub enum BooleanExpression {
|
41
|
-
Literal(
|
42
|
-
Not(Box<BooleanExpression
|
43
|
-
Operation(BooleanOperation),
|
40
|
+
pub enum BooleanExpression<T> {
|
41
|
+
Literal(T),
|
42
|
+
Not(Box<BooleanExpression<T>>),
|
43
|
+
Operation(BooleanOperation<T>),
|
44
44
|
}
|
@@ -93,7 +93,7 @@ pub struct Reader {
|
|
93
93
|
open_data_points: Vec<OpenDataPoint>,
|
94
94
|
}
|
95
95
|
|
96
|
-
fn segment_matches(expression: &BooleanExpression
|
96
|
+
fn segment_matches(expression: &BooleanExpression<String>, labels: &HashSet<String>) -> bool {
|
97
97
|
match expression {
|
98
98
|
BooleanExpression::Literal(tag) => labels.contains(tag),
|
99
99
|
BooleanExpression::Not(expr) => !segment_matches(expr, labels),
|
@@ -158,7 +158,7 @@ impl Reader {
|
|
158
158
|
pub fn _search(
|
159
159
|
&self,
|
160
160
|
request: &dyn SearchRequest,
|
161
|
-
segment_filter: &Option<BooleanExpression
|
161
|
+
segment_filter: &Option<BooleanExpression<String>>,
|
162
162
|
) -> VectorR<Vec<Neighbour>> {
|
163
163
|
let normalized_query;
|
164
164
|
let query = if self.config.normalize_vectors {
|
@@ -25,7 +25,7 @@ fn map_literal(literal: &str) -> Clause {
|
|
25
25
|
Clause::Atom(AtomClause::label(literal.to_string()))
|
26
26
|
}
|
27
27
|
|
28
|
-
fn map_not(inner: &BooleanExpression) -> Clause {
|
28
|
+
fn map_not(inner: &BooleanExpression<String>) -> Clause {
|
29
29
|
let operator = BooleanOperator::Not;
|
30
30
|
let operand = map_expression(inner);
|
31
31
|
let operands = vec![operand];
|
@@ -33,7 +33,7 @@ fn map_not(inner: &BooleanExpression) -> Clause {
|
|
33
33
|
Clause::Compound(CompoundClause::new(operator, operands))
|
34
34
|
}
|
35
35
|
|
36
|
-
fn map_operation(operation: &BooleanOperation) -> Clause {
|
36
|
+
fn map_operation(operation: &BooleanOperation<String>) -> Clause {
|
37
37
|
let operator = match operation.operator {
|
38
38
|
Operator::And => BooleanOperator::And,
|
39
39
|
Operator::Or => BooleanOperator::Or,
|
@@ -43,7 +43,7 @@ fn map_operation(operation: &BooleanOperation) -> Clause {
|
|
43
43
|
Clause::Compound(CompoundClause::new(operator, operands))
|
44
44
|
}
|
45
45
|
|
46
|
-
pub fn map_expression(expression: &BooleanExpression) -> Clause {
|
46
|
+
pub fn map_expression(expression: &BooleanExpression<String>) -> Clause {
|
47
47
|
match expression {
|
48
48
|
BooleanExpression::Not(inner) => map_not(inner),
|
49
49
|
BooleanExpression::Literal(literal) => map_literal(literal),
|
@@ -36,8 +36,8 @@ pub struct VectorSearchRequest {
|
|
36
36
|
pub vector_set: String,
|
37
37
|
pub min_score: f32,
|
38
38
|
|
39
|
-
pub filtering_formula: Option<BooleanExpression
|
40
|
-
pub segment_filtering_formula: Option<BooleanExpression
|
39
|
+
pub filtering_formula: Option<BooleanExpression<String>>,
|
40
|
+
pub segment_filtering_formula: Option<BooleanExpression<String>>,
|
41
41
|
/// Whether to do an OR/AND between prefilter results and filtering_formula
|
42
42
|
pub filter_or: bool,
|
43
43
|
}
|
@@ -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.post78"
|
17
17
|
|
18
18
|
[project.urls]
|
19
19
|
Homepage = "https://nuclia.com"
|
@@ -24,7 +24,7 @@ use nidx_protos::{
|
|
24
24
|
use nidx_types::query_language::*;
|
25
25
|
|
26
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
|
27
|
+
pub fn extract_label_filters(expression: &FilterExpression, labels: &[&str]) -> Option<BooleanExpression<String>> {
|
28
28
|
match expression.expr.as_ref().unwrap() {
|
29
29
|
Expr::Facet(FacetFilter { facet }) if labels.contains(&facet.as_str()) => {
|
30
30
|
Some(BooleanExpression::Literal(facet.clone()))
|
@@ -184,14 +184,14 @@ fn compute_relations_request(search_request: &SearchRequest) -> Option<RelationS
|
|
184
184
|
})
|
185
185
|
}
|
186
186
|
|
187
|
-
pub fn filter_to_boolean_expression(filter: FilterExpression) -> anyhow::Result<BooleanExpression
|
187
|
+
pub fn filter_to_boolean_expression(filter: FilterExpression) -> anyhow::Result<BooleanExpression<String>> {
|
188
188
|
match filter.expr.unwrap() {
|
189
189
|
Expr::BoolAnd(and) => {
|
190
190
|
let operands = and
|
191
191
|
.operands
|
192
192
|
.into_iter()
|
193
193
|
.map(filter_to_boolean_expression)
|
194
|
-
.collect::<anyhow::Result<Vec<BooleanExpression
|
194
|
+
.collect::<anyhow::Result<Vec<BooleanExpression<String>>>>()?;
|
195
195
|
Ok(BooleanExpression::Operation(BooleanOperation {
|
196
196
|
operator: Operator::And,
|
197
197
|
operands,
|
@@ -202,7 +202,7 @@ pub fn filter_to_boolean_expression(filter: FilterExpression) -> anyhow::Result<
|
|
202
202
|
.operands
|
203
203
|
.into_iter()
|
204
204
|
.map(filter_to_boolean_expression)
|
205
|
-
.collect::<anyhow::Result<Vec<BooleanExpression
|
205
|
+
.collect::<anyhow::Result<Vec<BooleanExpression<String>>>>()?;
|
206
206
|
Ok(BooleanExpression::Operation(BooleanOperation {
|
207
207
|
operator: Operator::Or,
|
208
208
|
operands,
|