nidx-binding 6.3.7.post327__tar.gz → 6.3.7.post331__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.7.post327 → nidx_binding-6.3.7.post331}/PKG-INFO +1 -1
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_protos/pyproject.toml +1 -1
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_relation/src/io_maps.rs +2 -20
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_relation/src/lib.rs +1 -7
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_relation/src/reader.rs +3 -111
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/pyproject.toml +1 -1
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/searcher/query_planner.rs +5 -142
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/searcher/shard_search.rs +2 -38
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/tests/test_date_range_search.rs +2 -2
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/tests/test_search_relations.rs +4 -311
- nidx_binding-6.3.7.post327/nidx_relation/tests/test_reader.rs +0 -286
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-0cfce9b29547f8f5bafa6e440f86103be7b8c4ad2fd92db9ac223f4efbe23d10.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-1a561eed00f3dbe868bf5030059793300209179dc8fb73e4b57a54b5e81262fe.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-1d3fca2682e25a01143da92285297f134a6a105a96f64d87e0db3abb219855e4.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-249b3b57c27a71baa823f1fe0f0bba9c9af36f61c28f731e58beea60ec48e687.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-24cb6b683daa42d7125f862e25943ab4be7bf275cd8739f8da4859d701795e1a.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-263c8fce6db5b03bbd012fafdba6943cbee6ed7eb8976cdef4f5b01dde7ca6fd.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-2a5d92fb1638df830a4477a7cdf24e6db6b43034b7bbe74fdfb63e8afe2c4071.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-2b065a363f58caed60e3706603c1260dbf5a4c795604a5b68edda22eb07fec1b.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-3fc3cb39934683de8cd475ce1368c8373453eb1e01f81587d66b9d14b109ce6e.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-48f33b77b7c1633467b0b2efcaa1d3c207e7757e4f1d83b40d15e6ca365f7771.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-4ae09f2c08e2f324bee01bb8487a8f37678a1c5e9d327339235c50d4921a8949.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-4d7a76fa413c9ef0ce2a47ac7bb7e01d3e6a2aabded9487d21010a53efee8852.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-4fcbdd6657c7dc9b60b3a563dd41711b3dbcf72ce063427b7a01f8cddf34c244.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-577109ac00ccfbd38ecaccab94116f2f46a4caf5612afa372cded197123c1e08.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-5db25f97d8578d6d78f2f6bd4b72cc82a9b1b82805c6422d967ac63b20d99db4.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-5ec3233a3a23e926055056d46bdde17836a633066dbb5f349502648cd3ea9a60.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-66edb6ea424d8681927dcddb6bac5f1239175f4775d1f40417ba15054b0c6f19.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-6f9c6d201c1b5712efb68c363bffd3e0169c11f2a8f925e8cd4e8808599ff7b4.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-733c3ebacc86f444bf5e2dd79ade660c291e88a00fc09b722f6e2e191545874c.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-7a3bf27c330c468a596e8a297cf7d8b192e31e67ecc5177c1267f579e8e247c7.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-7a7e59e47b30b12237511fd3d7da2d17b0471ad2b006af48d6a6f587c779692b.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-7dcbb33312cc9f11ae3a6d73b1ace017a9f19a8bf8f10304fc57977c8efeadff.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-7efa7c0d747afc4b6aed0586ff846c27839c3213ff7ee9f30c89b0d0f17e60e3.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-8493140d788604d498a4e48da4158708572ccc9d60185290a00d549cc84533db.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-8493bb0059b013eaca42fd10cd7d04f0d06a8acaed379eff0d23f3229edde9ee.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-87996b3d6c7a2195438d7038015b06949102bce8c7b8cd8db1f83aaf23cbe489.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-8d33717587c6ee8f5fc339a80b1212a73d6c03e45856b1d55457fc8074709dd0.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-8f096d8171b89f9615d18f95d696dc9e4fb3674e103161a713cdc806f7a68506.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-917732a56ee04bf3a6e127319dda8225210869c82f9828d878162394dba4e078.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-95fe4ef93ee90733db1b67ed7987f80b5aac792f1590b979c68b418d1599eb98.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-9b67658569b343d8b4b61ae0a7dc721f367f2ba33c7b69b9e68bfd5c9bff5206.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-9c8062ea55d070afef68309e58fa987eb37fda44e1efbf68c8ba2af7846cc968.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-a06e1d9f6f95e4c4c2b98310ebddcc9d963cc033582bf2e945e8bf3a301b4247.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-a55265c9b07bd1399961a6f1e757201fd0eebe868ddaf96437111113d80fce92.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-a60ec2f66f1e7b84189e5b089f2087a29ff6a64326a3743dea935bbc58ee77fa.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-a891a37be5c2d7cce775c2dd33726b0318fd3839beab222a1b22bc6174604207.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-a945191bb4b3e37d6823ed3ad499339d007d69983105de8567777d9daf517b28.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-abe9f7832f2bd799ac44008da031e8d8ab52d4f5fbfc2a7e3974e8873bae55b2.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-aca588cca57a85e4d7fcc40c23cd87e57d53d11ca550d78e7e3d5e39e524fcd3.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-b02f8aafc00a7724510772ac41269e368c5bccf03ef7b4590e0ef6fd1a1bf64f.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-b742e17cabe2d64617e9aa64bafc782172f7a4f8023d1b54f952a0fb39f6b2b8.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-b94e349dbc0daec57f8f8f6e9e2dffb06100b1bb2b41d297c9f3b191da37a83d.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-bd9afa22994aba671dbf7b5f89b53c2ee02f53c0442a81265786a6d52d08512f.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-be60554eca98a5899efc6b49785cecd6444a6d39afed9e4a884ce2dbf162012c.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-bf49702b506c9a1650ece1f8e8d9f14834a902f8caefafe30ded55e2790f2188.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-bfcd21ed704cd305db5c17fcdec7d92aa4ac501913c9c9514d8ff92928c0c7e7.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-c3ab694650f49a75b146fb877a92e48c4f20f0d99f70f8ec859fbb763b01a1e5.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-c55542bb9fae544d87fae6f30e0fe8a9088d12075f4442ab4fe2fcd05e472234.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-cb29a6556d35ac630ee0aa885dd7341cf9573bd3efd216ff8a887b87686b03db.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-d0a1f341a89f5f14696b10baa72db9d95551c2b7e5fc67308fd52dc03dd98a92.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-d2ad0a0ca2649c9e4873cfcc1fc66d2d07cc45d0f65c560b06d7b5f592f4fa8a.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-d6cfe78eb635ba0b89ca4021a4dc8182d18ab5b197f30149cd28488eba4c1df5.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-d729b56dea00e49dcdba8cf0001e2811da27351eabe98212db3b589f18fc6f32.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-d9658bfd4e7170b41d03f2ddf2446d0bf54171c0d39d53bf20af2b8437f2ec48.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-dbba7b3d3289425bae711aedbf73fbc3699f857f86f84d95c3b556d05c5658b0.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-dcb96b649d6d63a58efd5d445453a4f3d7869a56ff714b69bedf3d616a0473ca.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-ebd876fbf5362a5900e75bc05f2f11c73c406ef7da4e95097fc6a1c3d1b8bc54.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-eef5cc6bce1cc14eba8f3e68971724ef181e88cffcedd74673615f2026b89a62.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/.sqlx/query-ef56d5fefc5774040d1ee397beadb475f6af02768c22f0e583c74062e2e821ce.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/Cargo.lock +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/Cargo.toml +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/README.md +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/migrations/20241007163501_initial.sql +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/migrations/20241211120039_merge_job_priority.sql +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/migrations/20241211121159_basic_indexes.sql +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/migrations/20241212151105_check_segment_records.sql +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/migrations/20250110145554_in_flight_messages.sql +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_binding/Cargo.toml +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_binding/src/lib.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/Cargo.toml +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/src/fuzzy_query.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/src/lib.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/src/query_io.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/src/reader.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/src/request_types.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/src/schema.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/src/search_query.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/src/search_response.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/src/set_query.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/src/stop_words.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/README.md +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/ar.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/az.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/bn.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/ca.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/ch.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/da.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/de.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/el.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/en.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/es.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/eu.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/extract.py +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/fi.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/fr.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/he.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/hu.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/id.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/it.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/kk.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/ne.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/nl.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/no.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/pt.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/ro.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/ru.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/sl.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/sv.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/tg.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/stop_words/tr.json +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_paragraph/tests/reader.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_protos/Cargo.toml +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_protos/build.py +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_protos/build.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_protos/src/lib.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_protos/src/nidx.proto +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_relation/Cargo.toml +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_relation/src/graph_collector.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_relation/src/graph_query_parser.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_relation/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_relation/src/schema.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_relation/src/top_unique_n.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_relation/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_relation/tests/test_graph_query_parser_search.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_relation/tests/test_graph_search.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_relation/tests/test_writer.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_tantivy/Cargo.toml +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_tantivy/src/index_reader.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_tantivy/src/lib.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_tests/Cargo.toml +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_tests/src/graph.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_tests/src/lib.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_text/Cargo.toml +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_text/src/lib.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_text/src/prefilter.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_text/src/query_io.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_text/src/reader.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_text/src/request_types.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_text/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_text/src/schema.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_text/src/search_query.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_text/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_text/tests/test_deletions.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_text/tests/test_flow.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_text/tests/test_search.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_text/tests/test_streaming.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_types/Cargo.toml +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_types/src/lib.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_types/src/prefilter.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_types/src/query_language.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/Cargo.toml +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/config.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/data_point/disk_hnsw.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/data_point/mod.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/data_point/node.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/data_point/ops_hnsw.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/data_point/params.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/data_point/ram_hnsw.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/data_point/tests.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/data_point_provider/mod.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/data_point_provider/reader.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/data_types/data_store.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/data_types/mod.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/data_types/trie.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/data_types/trie_ram.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/formula/mod.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/indexer.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/inverted_index/fst_index.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/inverted_index/map.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/inverted_index.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/lib.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/query_io.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/request_types.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/utils.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/vector_types/dense_f32.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/src/vector_types/mod.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/tests/test_basic_search.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/nidx_vector/tests/test_hidden.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/api/grpc.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/api/shards.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/api.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/control.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/errors.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/grpc_server.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/import_export.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/indexer.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/lib.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/main.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/metadata/deletion.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/metadata/index.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/metadata/index_request.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/metadata/merge_job.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/metadata/segment.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/metadata/shard.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/metadata.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/metrics.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/scheduler/audit_task.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/scheduler/log_merge.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/scheduler/merge_task.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/scheduler/metrics_task.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/scheduler/purge_tasks.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/scheduler/vector_merge.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/scheduler.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/searcher/grpc.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/searcher/index_cache.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/searcher/query_language.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/searcher/shard_selector.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/searcher/shard_suggest.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/searcher/streams.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/searcher/sync.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/searcher.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/segment_store.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/settings.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/telemetry/duration_layer.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/telemetry/log_format.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/telemetry/middleware.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/telemetry.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/tool.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/utilization_tracker.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/src/worker.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/tests/common/services.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/tests/test_search_filtering.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/tests/test_search_sorting.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/tests/test_searcher_cluster.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/tests/test_security_search.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/tests/test_shards.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/tests/test_shards_api.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/tests/test_suggest.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/tests/test_synced_searcher.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/tests/test_vector_normalization.rs +0 -0
- {nidx_binding-6.3.7.post327 → nidx_binding-6.3.7.post331}/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.7.
|
3
|
+
Version: 6.3.7.post331
|
4
4
|
Classifier: Programming Language :: Rust
|
5
5
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
6
6
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
@@ -9,7 +9,7 @@ build-backend = "pdm.backend"
|
|
9
9
|
|
10
10
|
[project]
|
11
11
|
name = "nidx_protos"
|
12
|
-
version = "6.3.7.
|
12
|
+
version = "6.3.7.post331"
|
13
13
|
license = { text = "AGPL" }
|
14
14
|
description = "Protobuf definitions for nucliadb/nidx"
|
15
15
|
authors = [ { name = "Nuclia", email = "nucliadb@nuclia.com" }]
|
@@ -18,10 +18,10 @@
|
|
18
18
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
19
|
//
|
20
20
|
|
21
|
+
use nidx_protos::prost::*;
|
21
22
|
use nidx_protos::relation::RelationType;
|
22
23
|
use nidx_protos::relation_node::NodeType;
|
23
|
-
use nidx_protos::{
|
24
|
-
use nidx_protos::{Relation as ProtosRelation, RelationMetadata, RelationNode};
|
24
|
+
use nidx_protos::{RelationMetadata, RelationNode};
|
25
25
|
use tantivy::TantivyDocument;
|
26
26
|
use tantivy::schema::Value;
|
27
27
|
|
@@ -98,16 +98,6 @@ pub fn target_to_relation_node(schema: &Schema, doc: &TantivyDocument) -> Relati
|
|
98
98
|
}
|
99
99
|
}
|
100
100
|
|
101
|
-
pub fn doc_to_relation(schema: &Schema, doc: &TantivyDocument) -> ProtosRelation {
|
102
|
-
ProtosRelation {
|
103
|
-
metadata: decode_metadata(schema, doc),
|
104
|
-
relation: u64_to_relation_type::<i32>(schema.relationship(doc)),
|
105
|
-
relation_label: schema.relationship_label(doc).to_string(),
|
106
|
-
source: Some(source_to_relation_node(schema, doc)),
|
107
|
-
to: Some(target_to_relation_node(schema, doc)),
|
108
|
-
}
|
109
|
-
}
|
110
|
-
|
111
101
|
pub fn doc_to_resource_field_id(schema: &Schema, doc: &TantivyDocument) -> Option<String> {
|
112
102
|
doc.get_first(schema.resource_field_id).map(|v| {
|
113
103
|
let (rid, fid) = decode_field_id(v.as_bytes().unwrap());
|
@@ -121,14 +111,6 @@ pub fn doc_to_facets(schema: &Schema, doc: &TantivyDocument) -> Vec<String> {
|
|
121
111
|
.collect()
|
122
112
|
}
|
123
113
|
|
124
|
-
pub fn doc_to_index_relation(schema: &Schema, doc: &TantivyDocument) -> IndexRelation {
|
125
|
-
IndexRelation {
|
126
|
-
relation: Some(doc_to_relation(schema, doc)),
|
127
|
-
resource_field_id: doc_to_resource_field_id(schema, doc),
|
128
|
-
facets: doc_to_facets(schema, doc),
|
129
|
-
}
|
130
|
-
}
|
131
|
-
|
132
114
|
pub fn doc_to_graph_relation(schema: &Schema, doc: &TantivyDocument) -> nidx_protos::graph_search_response::Relation {
|
133
115
|
nidx_protos::graph_search_response::Relation {
|
134
116
|
relation_type: u64_to_relation_type::<i32>(schema.relationship(doc)),
|
@@ -34,8 +34,7 @@ use nidx_protos::graph_query::node::NewMatchKind;
|
|
34
34
|
use nidx_protos::graph_query::path_query;
|
35
35
|
use nidx_protos::graph_search_request::QueryKind;
|
36
36
|
use nidx_protos::{
|
37
|
-
GraphSearchRequest, GraphSearchResponse, RelationNode,
|
38
|
-
relation_node::NodeType, resource::ResourceStatus,
|
37
|
+
GraphSearchRequest, GraphSearchResponse, RelationNode, relation_node::NodeType, resource::ResourceStatus,
|
39
38
|
};
|
40
39
|
use nidx_tantivy::{
|
41
40
|
TantivyIndexer, TantivyMeta, TantivySegmentMetadata,
|
@@ -208,11 +207,6 @@ impl RelationSearcher {
|
|
208
207
|
}
|
209
208
|
|
210
209
|
#[instrument(name = "relation::search", skip_all)]
|
211
|
-
pub fn search(&self, request: &RelationSearchRequest) -> anyhow::Result<RelationSearchResponse> {
|
212
|
-
self.reader.relation_search(request)
|
213
|
-
}
|
214
|
-
|
215
|
-
#[instrument(name = "relation::graph_search", skip_all)]
|
216
210
|
pub fn graph_search(
|
217
211
|
&self,
|
218
212
|
request: &GraphSearchRequest,
|
@@ -21,29 +21,22 @@ use std::fmt::Debug;
|
|
21
21
|
use std::path::Path;
|
22
22
|
|
23
23
|
use nidx_protos::graph_search_request::QueryKind;
|
24
|
-
use nidx_protos::{
|
25
|
-
EntitiesSubgraphResponse, GraphSearchRequest, GraphSearchResponse, RelationNode, RelationSearchRequest,
|
26
|
-
RelationSearchResponse,
|
27
|
-
};
|
24
|
+
use nidx_protos::{GraphSearchRequest, GraphSearchResponse, RelationNode};
|
28
25
|
use nidx_types::prefilter::{FieldId, PrefilterResult};
|
29
26
|
use tantivy::collector::TopDocs;
|
30
|
-
use tantivy::query::{BooleanQuery, EmptyQuery,
|
27
|
+
use tantivy::query::{BooleanQuery, EmptyQuery, Query, TermSetQuery};
|
31
28
|
use tantivy::schema::Field;
|
32
29
|
use tantivy::{Index, IndexReader};
|
33
30
|
use uuid::Uuid;
|
34
31
|
|
35
32
|
use crate::graph_collector::{Selector, TopUniqueCollector};
|
36
|
-
use crate::graph_query_parser::{
|
37
|
-
BoolGraphQuery, BoolNodeQuery, Expression, GraphQuery, GraphQueryParser, Node, NodeQuery,
|
38
|
-
};
|
33
|
+
use crate::graph_query_parser::{BoolGraphQuery, BoolNodeQuery, GraphQueryParser};
|
39
34
|
use crate::schema::{Schema, decode_node, decode_relation, encode_field_id};
|
40
35
|
use crate::top_unique_n::TopUniqueN;
|
41
36
|
use crate::{RelationConfig, io_maps};
|
42
37
|
|
43
38
|
pub const FUZZY_DISTANCE: u8 = 1;
|
44
39
|
pub const NUMBER_OF_RESULTS_SUGGEST: usize = 20;
|
45
|
-
// Hard limit until we have pagination in place
|
46
|
-
const MAX_NUM_RELATIONS_RESULTS: usize = 500;
|
47
40
|
|
48
41
|
pub struct RelationsReaderService {
|
49
42
|
pub index: Index,
|
@@ -102,13 +95,6 @@ impl<'a, I: Iterator<Item = &'a FieldId>> Iterator for AddMetadataFieldIterator<
|
|
102
95
|
}
|
103
96
|
|
104
97
|
impl RelationsReaderService {
|
105
|
-
pub fn relation_search(&self, request: &RelationSearchRequest) -> anyhow::Result<RelationSearchResponse> {
|
106
|
-
Ok(RelationSearchResponse {
|
107
|
-
subgraph: self.entities_subgraph_search(request)?,
|
108
|
-
prefix: None,
|
109
|
-
})
|
110
|
-
}
|
111
|
-
|
112
98
|
pub fn graph_search(
|
113
99
|
&self,
|
114
100
|
request: &GraphSearchRequest,
|
@@ -290,100 +276,6 @@ impl RelationsReaderService {
|
|
290
276
|
schema: field_schema,
|
291
277
|
})
|
292
278
|
}
|
293
|
-
|
294
|
-
// TODO: remove unused method
|
295
|
-
fn entities_subgraph_search(
|
296
|
-
&self,
|
297
|
-
request: &RelationSearchRequest,
|
298
|
-
) -> anyhow::Result<Option<EntitiesSubgraphResponse>> {
|
299
|
-
let Some(bfs_request) = request.subgraph.as_ref() else {
|
300
|
-
return Ok(None);
|
301
|
-
};
|
302
|
-
|
303
|
-
if bfs_request.depth() != 1 {
|
304
|
-
return Err(anyhow::anyhow!("Depth must be 1 right now"));
|
305
|
-
}
|
306
|
-
|
307
|
-
if bfs_request.entry_points.is_empty() {
|
308
|
-
return Ok(Some(EntitiesSubgraphResponse::default()));
|
309
|
-
}
|
310
|
-
|
311
|
-
let query_parser = GraphQueryParser::new(&self.schema);
|
312
|
-
let mut statements = vec![];
|
313
|
-
|
314
|
-
// Entry points are source or target nodes we want to search for. We want any undirected
|
315
|
-
// path containing any entry point
|
316
|
-
for entry_point in bfs_request.entry_points.iter() {
|
317
|
-
statements.push((
|
318
|
-
Occur::Should,
|
319
|
-
query_parser.parse(GraphQuery::NodeQuery(NodeQuery::Node(Expression::Value(Node {
|
320
|
-
value: Some(entry_point.value.clone().into()),
|
321
|
-
node_type: Some(entry_point.ntype()),
|
322
|
-
node_subtype: Some(entry_point.subtype.clone()),
|
323
|
-
})))),
|
324
|
-
));
|
325
|
-
}
|
326
|
-
|
327
|
-
// A query can specifiy nodes marked as deleted in the db (but not removed from the index).
|
328
|
-
// We want to exclude any path containing any of those nodes.
|
329
|
-
//
|
330
|
-
// The request groups values per subtype (to optimize request size) but, as we don't support
|
331
|
-
// OR at node value level, we'll split them.
|
332
|
-
for deleted_nodes in bfs_request.deleted_entities.iter() {
|
333
|
-
if deleted_nodes.node_values.is_empty() {
|
334
|
-
continue;
|
335
|
-
}
|
336
|
-
statements.push((
|
337
|
-
Occur::MustNot,
|
338
|
-
query_parser.parse(GraphQuery::NodeQuery(NodeQuery::Node(Expression::Or(
|
339
|
-
deleted_nodes
|
340
|
-
.node_values
|
341
|
-
.iter()
|
342
|
-
.map(|deleted_entity_value| Node {
|
343
|
-
value: Some(deleted_entity_value.clone().into()),
|
344
|
-
node_subtype: Some(deleted_nodes.node_subtype.clone()),
|
345
|
-
..Default::default()
|
346
|
-
})
|
347
|
-
.collect(),
|
348
|
-
)))),
|
349
|
-
));
|
350
|
-
}
|
351
|
-
|
352
|
-
// Subtypes can also be marked as deleted in the db (but kept in the index). We also want to
|
353
|
-
// exclude any triplet containg a node with such subtypes
|
354
|
-
let excluded_subtypes: Vec<_> = bfs_request
|
355
|
-
.deleted_groups
|
356
|
-
.iter()
|
357
|
-
.map(|deleted_subtype| Node {
|
358
|
-
node_subtype: Some(deleted_subtype.clone()),
|
359
|
-
..Default::default()
|
360
|
-
})
|
361
|
-
.collect();
|
362
|
-
|
363
|
-
if !excluded_subtypes.is_empty() {
|
364
|
-
statements.push((
|
365
|
-
Occur::MustNot,
|
366
|
-
query_parser.parse(GraphQuery::NodeQuery(NodeQuery::Node(Expression::Or(
|
367
|
-
excluded_subtypes,
|
368
|
-
)))),
|
369
|
-
))
|
370
|
-
}
|
371
|
-
|
372
|
-
let query: Box<dyn Query> = Box::new(BooleanQuery::new(statements));
|
373
|
-
let searcher = self.reader.searcher();
|
374
|
-
|
375
|
-
let topdocs = TopDocs::with_limit(MAX_NUM_RELATIONS_RESULTS);
|
376
|
-
let matching_docs = searcher.search(&query, &topdocs)?;
|
377
|
-
let mut response = EntitiesSubgraphResponse::default();
|
378
|
-
|
379
|
-
for (_, doc_addr) in matching_docs {
|
380
|
-
let source = searcher.doc(doc_addr)?;
|
381
|
-
let index_relation = io_maps::doc_to_index_relation(&self.schema, &source);
|
382
|
-
response.relations.push(index_relation);
|
383
|
-
}
|
384
|
-
|
385
|
-
Ok(Some(response))
|
386
|
-
}
|
387
279
|
}
|
388
280
|
|
389
281
|
#[derive(Debug)]
|
@@ -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.7.
|
16
|
+
version = "6.3.7.post331"
|
17
17
|
|
18
18
|
[project.urls]
|
19
19
|
Homepage = "https://nuclia.com"
|
@@ -20,12 +20,8 @@
|
|
20
20
|
|
21
21
|
use nidx_paragraph::ParagraphSearchRequest;
|
22
22
|
use nidx_protos::filter_expression::Expr;
|
23
|
-
use nidx_protos::graph_query::{self, PathQuery, path_query};
|
24
23
|
use nidx_protos::graph_search_request::QueryKind;
|
25
|
-
use nidx_protos::
|
26
|
-
use nidx_protos::{
|
27
|
-
EntitiesSubgraphRequest, FilterExpression, FilterOperator, GraphQuery, GraphSearchRequest, SearchRequest,
|
28
|
-
};
|
24
|
+
use nidx_protos::{FilterExpression, FilterOperator, GraphSearchRequest, SearchRequest};
|
29
25
|
use nidx_text::DocumentSearchRequest;
|
30
26
|
use nidx_text::prefilter::*;
|
31
27
|
use nidx_types::prefilter::PrefilterResult;
|
@@ -70,7 +66,7 @@ pub struct QueryPlan {
|
|
70
66
|
}
|
71
67
|
|
72
68
|
pub fn build_query_plan(search_request: SearchRequest) -> anyhow::Result<QueryPlan> {
|
73
|
-
let graph_request =
|
69
|
+
let graph_request = compute_graph_request(&search_request)?;
|
74
70
|
let texts_request = compute_texts_request(&search_request);
|
75
71
|
let vectors_request = compute_vectors_request(&search_request)?;
|
76
72
|
let paragraphs_request = compute_paragraphs_request(&search_request)?;
|
@@ -177,22 +173,9 @@ fn compute_vectors_request(search_request: &SearchRequest) -> anyhow::Result<Opt
|
|
177
173
|
}
|
178
174
|
|
179
175
|
#[allow(deprecated)]
|
180
|
-
fn
|
181
|
-
let graph_search =
|
182
|
-
|
183
|
-
search_request.graph_search.as_ref(),
|
184
|
-
) {
|
185
|
-
(None, None) => return Ok(None),
|
186
|
-
(Some(_), Some(_)) => {
|
187
|
-
return Err(anyhow::anyhow!(
|
188
|
-
"Entities subgraph and graph search are mutually exclusive features"
|
189
|
-
));
|
190
|
-
}
|
191
|
-
(Some(bfs_request), None) => {
|
192
|
-
// Bw/c: we'll convert the entities subgraph request into a graph request
|
193
|
-
convert_entities_subgraph_into_graph_search(bfs_request)
|
194
|
-
}
|
195
|
-
(None, Some(graph_search)) => graph_search.clone(),
|
176
|
+
fn compute_graph_request(search_request: &SearchRequest) -> anyhow::Result<Option<GraphSearchRequest>> {
|
177
|
+
let Some(graph_search) = search_request.graph_search.clone() else {
|
178
|
+
return Ok(None);
|
196
179
|
};
|
197
180
|
|
198
181
|
Ok(Some(GraphSearchRequest {
|
@@ -205,126 +188,6 @@ fn compute_relations_request(search_request: &SearchRequest) -> anyhow::Result<O
|
|
205
188
|
}))
|
206
189
|
}
|
207
190
|
|
208
|
-
fn convert_entities_subgraph_into_graph_search(bfs_request: &EntitiesSubgraphRequest) -> GraphSearch {
|
209
|
-
if bfs_request.entry_points.is_empty() {
|
210
|
-
return GraphSearch { query: None };
|
211
|
-
}
|
212
|
-
|
213
|
-
// Entry points are source or target nodes we want to search for. We want any undirected
|
214
|
-
// path containing any entry point
|
215
|
-
let entry_points_queries: Vec<PathQuery> = bfs_request
|
216
|
-
.entry_points
|
217
|
-
.iter()
|
218
|
-
.map(|entry_point| PathQuery {
|
219
|
-
query: Some(path_query::Query::Path(graph_query::Path {
|
220
|
-
source: Some(graph_query::Node {
|
221
|
-
value: Some(entry_point.value.clone()),
|
222
|
-
node_type: Some(entry_point.ntype),
|
223
|
-
node_subtype: Some(entry_point.subtype.clone()),
|
224
|
-
..Default::default()
|
225
|
-
}),
|
226
|
-
undirected: true,
|
227
|
-
..Default::default()
|
228
|
-
})),
|
229
|
-
})
|
230
|
-
.collect();
|
231
|
-
|
232
|
-
// A query can specifiy nodes marked as deleted in the db (but not removed from the index).
|
233
|
-
// We want to exclude any path containing any of those nodes.
|
234
|
-
//
|
235
|
-
// The request groups values per subtype (to optimize request size) but, as we don't support
|
236
|
-
// OR at node value level, we'll split them.
|
237
|
-
let deleted_nodes_queries: Vec<PathQuery> = bfs_request
|
238
|
-
.deleted_entities
|
239
|
-
.iter()
|
240
|
-
.flat_map(|deleted_nodes| {
|
241
|
-
if deleted_nodes.node_values.is_empty() {
|
242
|
-
return None;
|
243
|
-
}
|
244
|
-
let subtype = &deleted_nodes.node_subtype;
|
245
|
-
|
246
|
-
let subqueries = deleted_nodes
|
247
|
-
.node_values
|
248
|
-
.iter()
|
249
|
-
.map(|deleted_entity_value| PathQuery {
|
250
|
-
query: Some(path_query::Query::Path(graph_query::Path {
|
251
|
-
source: Some(graph_query::Node {
|
252
|
-
value: Some(deleted_entity_value.clone()),
|
253
|
-
node_subtype: Some(subtype.clone()),
|
254
|
-
..Default::default()
|
255
|
-
}),
|
256
|
-
undirected: true,
|
257
|
-
..Default::default()
|
258
|
-
})),
|
259
|
-
})
|
260
|
-
.collect::<Vec<_>>();
|
261
|
-
Some(subqueries)
|
262
|
-
})
|
263
|
-
.flatten()
|
264
|
-
.collect();
|
265
|
-
|
266
|
-
// Subtypes can also be marked as deleted in the db (but kept in the index). We also
|
267
|
-
// want to exclude any triplet containg a node with such subtypes
|
268
|
-
let excluded_subtypes_queries: Vec<PathQuery> = bfs_request
|
269
|
-
.deleted_groups
|
270
|
-
.iter()
|
271
|
-
.map(|deleted_subtype| PathQuery {
|
272
|
-
query: Some(path_query::Query::Path(graph_query::Path {
|
273
|
-
source: Some(graph_query::Node {
|
274
|
-
node_subtype: Some(deleted_subtype.clone()),
|
275
|
-
..Default::default()
|
276
|
-
}),
|
277
|
-
undirected: true,
|
278
|
-
..Default::default()
|
279
|
-
})),
|
280
|
-
})
|
281
|
-
.collect::<Vec<_>>();
|
282
|
-
|
283
|
-
let mut subqueries = vec![];
|
284
|
-
if !entry_points_queries.is_empty() {
|
285
|
-
// match any entry point
|
286
|
-
subqueries.push(PathQuery {
|
287
|
-
query: Some(path_query::Query::BoolOr(graph_query::BoolQuery {
|
288
|
-
operands: entry_points_queries,
|
289
|
-
})),
|
290
|
-
});
|
291
|
-
}
|
292
|
-
|
293
|
-
if !deleted_nodes_queries.is_empty() {
|
294
|
-
// exclude deleted nodes
|
295
|
-
subqueries.push(PathQuery {
|
296
|
-
query: Some(path_query::Query::BoolNot(Box::new(PathQuery {
|
297
|
-
query: Some(path_query::Query::BoolOr(graph_query::BoolQuery {
|
298
|
-
operands: deleted_nodes_queries,
|
299
|
-
})),
|
300
|
-
}))),
|
301
|
-
});
|
302
|
-
}
|
303
|
-
|
304
|
-
if !excluded_subtypes_queries.is_empty() {
|
305
|
-
// exclude specific subtypes
|
306
|
-
subqueries.push(PathQuery {
|
307
|
-
query: Some(path_query::Query::BoolNot(Box::new(PathQuery {
|
308
|
-
query: Some(path_query::Query::BoolOr(graph_query::BoolQuery {
|
309
|
-
operands: excluded_subtypes_queries,
|
310
|
-
})),
|
311
|
-
}))),
|
312
|
-
});
|
313
|
-
}
|
314
|
-
|
315
|
-
let graph_query = GraphQuery {
|
316
|
-
path: Some(PathQuery {
|
317
|
-
query: Some(path_query::Query::BoolAnd(graph_query::BoolQuery {
|
318
|
-
operands: subqueries,
|
319
|
-
})),
|
320
|
-
}),
|
321
|
-
};
|
322
|
-
|
323
|
-
GraphSearch {
|
324
|
-
query: Some(graph_query),
|
325
|
-
}
|
326
|
-
}
|
327
|
-
|
328
191
|
pub fn filter_to_boolean_expression(filter: FilterExpression) -> anyhow::Result<BooleanExpression<String>> {
|
329
192
|
match filter.expr.unwrap() {
|
330
193
|
Expr::BoolAnd(and) => {
|
@@ -21,10 +21,7 @@
|
|
21
21
|
use std::sync::Arc;
|
22
22
|
|
23
23
|
use nidx_paragraph::ParagraphSearcher;
|
24
|
-
use nidx_protos::{
|
25
|
-
EntitiesSubgraphResponse, GraphSearchRequest, GraphSearchResponse, IndexRelation, Relation, RelationSearchResponse,
|
26
|
-
SearchRequest, SearchResponse,
|
27
|
-
};
|
24
|
+
use nidx_protos::{GraphSearchRequest, GraphSearchResponse, SearchRequest, SearchResponse};
|
28
25
|
use nidx_relation::RelationSearcher;
|
29
26
|
use nidx_text::{TextSearcher, prefilter::PreFilterRequest};
|
30
27
|
use nidx_types::prefilter::PrefilterResult;
|
@@ -172,44 +169,11 @@ fn blocking_search(
|
|
172
169
|
}
|
173
170
|
});
|
174
171
|
|
175
|
-
let graph_response = rrelation.transpose()?;
|
176
|
-
|
177
|
-
// Bw/c: convert graph search into relation response
|
178
|
-
let relation_response = graph_response.clone().map(|graph_response| {
|
179
|
-
let relations = graph_response
|
180
|
-
.graph
|
181
|
-
.into_iter()
|
182
|
-
.map(|path| {
|
183
|
-
let source = graph_response.nodes[path.source as usize].clone();
|
184
|
-
let relation = graph_response.relations[path.relation as usize].clone();
|
185
|
-
let destination = graph_response.nodes[path.destination as usize].clone();
|
186
|
-
|
187
|
-
IndexRelation {
|
188
|
-
relation: Some(Relation {
|
189
|
-
source: Some(source),
|
190
|
-
to: Some(destination),
|
191
|
-
relation: relation.relation_type,
|
192
|
-
relation_label: relation.label,
|
193
|
-
metadata: path.metadata,
|
194
|
-
}),
|
195
|
-
resource_field_id: path.resource_field_id,
|
196
|
-
facets: path.facets,
|
197
|
-
}
|
198
|
-
})
|
199
|
-
.collect();
|
200
|
-
|
201
|
-
RelationSearchResponse {
|
202
|
-
subgraph: Some(EntitiesSubgraphResponse { relations }),
|
203
|
-
..Default::default()
|
204
|
-
}
|
205
|
-
});
|
206
|
-
|
207
172
|
Ok(SearchResponse {
|
208
173
|
document: rtext.transpose()?,
|
209
174
|
paragraph: rparagraph.transpose()?,
|
210
175
|
vector: rvector.transpose()?,
|
211
|
-
|
212
|
-
graph: graph_response,
|
176
|
+
graph: rrelation.transpose()?,
|
213
177
|
})
|
214
178
|
}
|
215
179
|
|
@@ -254,7 +254,7 @@ async fn test_date_range_search(pool: PgPool) -> Result<(), Box<dyn std::error::
|
|
254
254
|
assert_eq!(result.document, None);
|
255
255
|
assert_eq!(result.paragraph, None);
|
256
256
|
assert_eq!(result.vector, None);
|
257
|
-
assert_eq!(result.
|
257
|
+
assert_eq!(result.graph, None);
|
258
258
|
|
259
259
|
// Multiple timestamps are parsed as AND conditions
|
260
260
|
let mut request_second_batch = request.clone();
|
@@ -283,7 +283,7 @@ async fn test_date_range_search(pool: PgPool) -> Result<(), Box<dyn std::error::
|
|
283
283
|
assert_eq!(result.document, None);
|
284
284
|
assert_eq!(result.paragraph, None);
|
285
285
|
assert_eq!(result.vector, None);
|
286
|
-
assert_eq!(result.
|
286
|
+
assert_eq!(result.graph, None);
|
287
287
|
|
288
288
|
Ok(())
|
289
289
|
}
|