nidx-binding 6.3.4.post137__tar.gz → 6.3.4.post146__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.4.post137 → nidx_binding-6.3.4.post146}/PKG-INFO +1 -1
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/src/reader.rs +1 -1
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/src/search_query.rs +1 -1
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/src/search_response.rs +3 -3
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_protos/pyproject.toml +1 -1
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_relation/src/graph_collector.rs +191 -41
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_relation/src/reader.rs +98 -38
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_relation/src/resource_indexer.rs +16 -4
- nidx_binding-6.3.4.post146/nidx_relation/src/schema.rs +538 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_relation/tests/test_graph_query_parser_search.rs +1 -1
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_text/tests/test_streaming.rs +0 -1
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/data_point/disk_hnsw.rs +1 -1
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/data_point/mod.rs +1 -1
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/data_point/ops_hnsw.rs +1 -1
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/data_point_provider/reader.rs +2 -2
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/inverted_index/fst_index.rs +1 -1
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/pyproject.toml +1 -1
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/api/grpc.rs +1 -3
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/searcher/shard_selector.rs +1 -1
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/searcher/sync.rs +1 -1
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/telemetry/log_format.rs +2 -2
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/telemetry/middleware.rs +2 -2
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/telemetry.rs +1 -1
- nidx_binding-6.3.4.post137/nidx_relation/src/schema.rs +0 -260
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-0cfce9b29547f8f5bafa6e440f86103be7b8c4ad2fd92db9ac223f4efbe23d10.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-1a561eed00f3dbe868bf5030059793300209179dc8fb73e4b57a54b5e81262fe.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-1d3fca2682e25a01143da92285297f134a6a105a96f64d87e0db3abb219855e4.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-249b3b57c27a71baa823f1fe0f0bba9c9af36f61c28f731e58beea60ec48e687.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-24cb6b683daa42d7125f862e25943ab4be7bf275cd8739f8da4859d701795e1a.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-263c8fce6db5b03bbd012fafdba6943cbee6ed7eb8976cdef4f5b01dde7ca6fd.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-2a5d92fb1638df830a4477a7cdf24e6db6b43034b7bbe74fdfb63e8afe2c4071.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-2b065a363f58caed60e3706603c1260dbf5a4c795604a5b68edda22eb07fec1b.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-3fc3cb39934683de8cd475ce1368c8373453eb1e01f81587d66b9d14b109ce6e.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-48f33b77b7c1633467b0b2efcaa1d3c207e7757e4f1d83b40d15e6ca365f7771.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-4ae09f2c08e2f324bee01bb8487a8f37678a1c5e9d327339235c50d4921a8949.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-4d7a76fa413c9ef0ce2a47ac7bb7e01d3e6a2aabded9487d21010a53efee8852.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-4fcbdd6657c7dc9b60b3a563dd41711b3dbcf72ce063427b7a01f8cddf34c244.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-577109ac00ccfbd38ecaccab94116f2f46a4caf5612afa372cded197123c1e08.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-5db25f97d8578d6d78f2f6bd4b72cc82a9b1b82805c6422d967ac63b20d99db4.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-5ec3233a3a23e926055056d46bdde17836a633066dbb5f349502648cd3ea9a60.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-66edb6ea424d8681927dcddb6bac5f1239175f4775d1f40417ba15054b0c6f19.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-6f9c6d201c1b5712efb68c363bffd3e0169c11f2a8f925e8cd4e8808599ff7b4.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-733c3ebacc86f444bf5e2dd79ade660c291e88a00fc09b722f6e2e191545874c.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-77a245aed9f6f8b9fc643efbd4b1e2e8e99bbba085e3e75a4f29321cd7b2a25c.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-7a3bf27c330c468a596e8a297cf7d8b192e31e67ecc5177c1267f579e8e247c7.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-7a7e59e47b30b12237511fd3d7da2d17b0471ad2b006af48d6a6f587c779692b.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-7dcbb33312cc9f11ae3a6d73b1ace017a9f19a8bf8f10304fc57977c8efeadff.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-7efa7c0d747afc4b6aed0586ff846c27839c3213ff7ee9f30c89b0d0f17e60e3.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-8493140d788604d498a4e48da4158708572ccc9d60185290a00d549cc84533db.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-8493bb0059b013eaca42fd10cd7d04f0d06a8acaed379eff0d23f3229edde9ee.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-87996b3d6c7a2195438d7038015b06949102bce8c7b8cd8db1f83aaf23cbe489.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-8f096d8171b89f9615d18f95d696dc9e4fb3674e103161a713cdc806f7a68506.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-917732a56ee04bf3a6e127319dda8225210869c82f9828d878162394dba4e078.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-95fe4ef93ee90733db1b67ed7987f80b5aac792f1590b979c68b418d1599eb98.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-9b67658569b343d8b4b61ae0a7dc721f367f2ba33c7b69b9e68bfd5c9bff5206.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-9c8062ea55d070afef68309e58fa987eb37fda44e1efbf68c8ba2af7846cc968.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-a06e1d9f6f95e4c4c2b98310ebddcc9d963cc033582bf2e945e8bf3a301b4247.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-a55265c9b07bd1399961a6f1e757201fd0eebe868ddaf96437111113d80fce92.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-a891a37be5c2d7cce775c2dd33726b0318fd3839beab222a1b22bc6174604207.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-a945191bb4b3e37d6823ed3ad499339d007d69983105de8567777d9daf517b28.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-abe9f7832f2bd799ac44008da031e8d8ab52d4f5fbfc2a7e3974e8873bae55b2.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-aca588cca57a85e4d7fcc40c23cd87e57d53d11ca550d78e7e3d5e39e524fcd3.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-b02f8aafc00a7724510772ac41269e368c5bccf03ef7b4590e0ef6fd1a1bf64f.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-b742e17cabe2d64617e9aa64bafc782172f7a4f8023d1b54f952a0fb39f6b2b8.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-b94e349dbc0daec57f8f8f6e9e2dffb06100b1bb2b41d297c9f3b191da37a83d.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-bd9afa22994aba671dbf7b5f89b53c2ee02f53c0442a81265786a6d52d08512f.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-be60554eca98a5899efc6b49785cecd6444a6d39afed9e4a884ce2dbf162012c.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-bf49702b506c9a1650ece1f8e8d9f14834a902f8caefafe30ded55e2790f2188.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-bfb8ae2e860e451b0868a7b1b50a451d998b2105f9fdfd307b26a1775d145e9f.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-bfcd21ed704cd305db5c17fcdec7d92aa4ac501913c9c9514d8ff92928c0c7e7.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-c3ab694650f49a75b146fb877a92e48c4f20f0d99f70f8ec859fbb763b01a1e5.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-c55542bb9fae544d87fae6f30e0fe8a9088d12075f4442ab4fe2fcd05e472234.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-cb29a6556d35ac630ee0aa885dd7341cf9573bd3efd216ff8a887b87686b03db.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-d0a1f341a89f5f14696b10baa72db9d95551c2b7e5fc67308fd52dc03dd98a92.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-d2ad0a0ca2649c9e4873cfcc1fc66d2d07cc45d0f65c560b06d7b5f592f4fa8a.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-d6cfe78eb635ba0b89ca4021a4dc8182d18ab5b197f30149cd28488eba4c1df5.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-d729b56dea00e49dcdba8cf0001e2811da27351eabe98212db3b589f18fc6f32.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-d9658bfd4e7170b41d03f2ddf2446d0bf54171c0d39d53bf20af2b8437f2ec48.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-dbba7b3d3289425bae711aedbf73fbc3699f857f86f84d95c3b556d05c5658b0.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-dcb96b649d6d63a58efd5d445453a4f3d7869a56ff714b69bedf3d616a0473ca.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-ebd876fbf5362a5900e75bc05f2f11c73c406ef7da4e95097fc6a1c3d1b8bc54.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-eef5cc6bce1cc14eba8f3e68971724ef181e88cffcedd74673615f2026b89a62.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/.sqlx/query-ef56d5fefc5774040d1ee397beadb475f6af02768c22f0e583c74062e2e821ce.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/Cargo.lock +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/README.md +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/migrations/20241007163501_initial.sql +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/migrations/20241211120039_merge_job_priority.sql +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/migrations/20241211121159_basic_indexes.sql +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/migrations/20241212151105_check_segment_records.sql +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/migrations/20250110145554_in_flight_messages.sql +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_binding/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_binding/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/src/fuzzy_query.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/src/query_io.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/src/request_types.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/src/schema.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/src/set_query.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/src/stop_words.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/README.md +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/ar.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/az.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/bn.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/ca.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/ch.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/da.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/de.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/el.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/en.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/es.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/eu.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/extract.py +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/fi.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/fr.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/he.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/hu.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/id.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/it.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/kk.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/ne.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/nl.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/no.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/pt.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/ro.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/ru.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/sl.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/sv.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/tg.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/stop_words/tr.json +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/tests/reader.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_protos/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_protos/build.py +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_protos/build.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_protos/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_protos/src/nidx.proto +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_relation/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_relation/src/graph_query_parser.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_relation/src/io_maps.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_relation/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_relation/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_relation/tests/test_graph_search.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_relation/tests/test_reader.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_relation/tests/test_writer.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_tantivy/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_tantivy/src/index_reader.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_tantivy/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_tests/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_tests/src/graph.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_tests/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_text/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_text/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_text/src/prefilter.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_text/src/query_io.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_text/src/reader.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_text/src/request_types.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_text/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_text/src/schema.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_text/src/search_query.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_text/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_text/tests/test_flow.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_text/tests/test_search.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_types/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_types/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_types/src/prefilter.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_types/src/query_language.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/config.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/data_point/node.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/data_point/params.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/data_point/ram_hnsw.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/data_point/tests.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/data_point_provider/mod.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/data_types/data_store.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/data_types/mod.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/data_types/trie.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/data_types/trie_ram.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/formula/mod.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/indexer.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/inverted_index/map.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/inverted_index.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/query_io.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/request_types.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/utils.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/vector_types/dense_f32.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/src/vector_types/mod.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/tests/test_basic_search.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_vector/tests/test_hidden.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/api/shards.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/api.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/control.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/errors.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/grpc_server.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/import_export.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/indexer.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/main.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/metadata/deletion.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/metadata/index.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/metadata/index_request.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/metadata/merge_job.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/metadata/segment.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/metadata/shard.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/metadata.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/metrics.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/scheduler/audit_task.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/scheduler/log_merge.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/scheduler/merge_task.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/scheduler/metrics_task.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/scheduler/purge_tasks.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/scheduler/vector_merge.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/scheduler.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/searcher/grpc.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/searcher/index_cache.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/searcher/query_language.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/searcher/query_planner.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/searcher/shard_search.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/searcher/shard_suggest.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/searcher/streams.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/searcher.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/segment_store.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/settings.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/telemetry/duration_layer.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/tool.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/src/worker.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/tests/common/services.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/tests/test_date_range_search.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/tests/test_search_filtering.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/tests/test_search_relations.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/tests/test_search_sorting.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/tests/test_searcher_cluster.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/tests/test_security_search.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/tests/test_shards.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/tests/test_shards_api.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/tests/test_suggest.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/tests/test_synced_searcher.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/tests/test_vector_normalization.rs +0 -0
- {nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/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.4.
|
3
|
+
Version: 6.3.4.post146
|
4
4
|
Classifier: Programming Language :: Rust
|
5
5
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
6
6
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
{nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/src/search_query.rs
RENAMED
@@ -109,7 +109,7 @@ fn queryp_map(queries: Vec<QueryP>, distance: u8, as_prefix: Option<usize>, term
|
|
109
109
|
.enumerate()
|
110
110
|
.map(|(id, (_, query))| {
|
111
111
|
let query = if query.is::<TermQuery>() {
|
112
|
-
term_to_fuzzy(query, distance, termc.clone(), as_prefix
|
112
|
+
term_to_fuzzy(query, distance, termc.clone(), as_prefix == Some(id))
|
113
113
|
} else {
|
114
114
|
query
|
115
115
|
};
|
{nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_paragraph/src/search_response.rs
RENAMED
@@ -97,7 +97,7 @@ pub struct SearchFacetsResponse<'a> {
|
|
97
97
|
pub facets: Vec<String>,
|
98
98
|
}
|
99
99
|
|
100
|
-
impl
|
100
|
+
impl From<SearchFacetsResponse<'_>> for ParagraphSearchResponse {
|
101
101
|
fn from(response: SearchFacetsResponse) -> Self {
|
102
102
|
let facets = response
|
103
103
|
.facets_count
|
@@ -112,7 +112,7 @@ impl<'a> From<SearchFacetsResponse<'a>> for ParagraphSearchResponse {
|
|
112
112
|
}
|
113
113
|
}
|
114
114
|
|
115
|
-
impl
|
115
|
+
impl From<SearchIntResponse<'_>> for ParagraphSearchResponse {
|
116
116
|
fn from(response: SearchIntResponse) -> Self {
|
117
117
|
let total = response.total as i32;
|
118
118
|
let obtained = response.top_docs.len();
|
@@ -210,7 +210,7 @@ impl<'a> From<SearchIntResponse<'a>> for ParagraphSearchResponse {
|
|
210
210
|
}
|
211
211
|
}
|
212
212
|
|
213
|
-
impl
|
213
|
+
impl From<SearchBm25Response<'_>> for ParagraphSearchResponse {
|
214
214
|
fn from(response: SearchBm25Response) -> Self {
|
215
215
|
let total = response.total as i32;
|
216
216
|
let obtained = response.top_docs.len();
|
@@ -4,7 +4,7 @@ build-backend = "pdm.backend"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "nidx_protos"
|
7
|
-
version = "6.3.4.
|
7
|
+
version = "6.3.4.post146"
|
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.4.post137 → nidx_binding-6.3.4.post146}/nidx_relation/src/graph_collector.rs
RENAMED
@@ -23,6 +23,7 @@ use std::collections::{HashMap, HashSet};
|
|
23
23
|
use tantivy::{
|
24
24
|
DocId, Score, SegmentOrdinal, SegmentReader, TantivyDocument,
|
25
25
|
collector::{Collector, SegmentCollector},
|
26
|
+
columnar::Column,
|
26
27
|
store::StoreReader,
|
27
28
|
};
|
28
29
|
use tracing::warn;
|
@@ -41,23 +42,42 @@ pub enum NodeSelector {
|
|
41
42
|
DestinationNodes,
|
42
43
|
}
|
43
44
|
|
45
|
+
// Node collector for schema v1
|
46
|
+
|
44
47
|
pub struct TopUniqueNodeCollector {
|
45
48
|
limit: usize,
|
46
49
|
selector: NodeSelector,
|
47
50
|
schema: crate::schema::Schema,
|
48
51
|
}
|
49
52
|
|
50
|
-
pub struct
|
53
|
+
pub struct TopUniqueNodeSegmentCollector {
|
51
54
|
limit: usize,
|
55
|
+
selector: NodeSelector,
|
56
|
+
unique: HashSet<NodeId>,
|
52
57
|
schema: crate::schema::Schema,
|
58
|
+
store_reader: StoreReader,
|
53
59
|
}
|
54
60
|
|
55
|
-
|
61
|
+
// Node collector for schema v2
|
62
|
+
//
|
63
|
+
// We can now use fast fields to uniquely identify nodes.
|
64
|
+
|
65
|
+
pub struct TopUniqueNodeCollector2 {
|
56
66
|
limit: usize,
|
57
67
|
selector: NodeSelector,
|
58
|
-
|
68
|
+
}
|
69
|
+
|
70
|
+
pub struct TopUniqueNodeSegmentCollector2 {
|
71
|
+
limit: usize,
|
72
|
+
unique: HashSet<Vec<u64>>,
|
73
|
+
encoded_node_reader: Column<u64>,
|
74
|
+
}
|
75
|
+
|
76
|
+
// Relations collector
|
77
|
+
|
78
|
+
pub struct TopUniqueRelationCollector {
|
79
|
+
limit: usize,
|
59
80
|
schema: crate::schema::Schema,
|
60
|
-
store_reader: StoreReader,
|
61
81
|
}
|
62
82
|
|
63
83
|
pub struct TopUniqueRelationSegmentCollector {
|
@@ -67,6 +87,18 @@ pub struct TopUniqueRelationSegmentCollector {
|
|
67
87
|
store_reader: StoreReader,
|
68
88
|
}
|
69
89
|
|
90
|
+
// Relations collector for schema v2
|
91
|
+
|
92
|
+
pub struct TopUniqueRelationCollector2 {
|
93
|
+
limit: usize,
|
94
|
+
}
|
95
|
+
|
96
|
+
pub struct TopUniqueRelationSegmentCollector2 {
|
97
|
+
limit: usize,
|
98
|
+
unique: HashSet<Vec<u64>>,
|
99
|
+
encoded_relation_reader: Column<u64>,
|
100
|
+
}
|
101
|
+
|
70
102
|
impl TopUniqueNodeCollector {
|
71
103
|
pub fn new(schema: crate::schema::Schema, selector: NodeSelector, limit: usize) -> Self {
|
72
104
|
Self {
|
@@ -77,12 +109,6 @@ impl TopUniqueNodeCollector {
|
|
77
109
|
}
|
78
110
|
}
|
79
111
|
|
80
|
-
impl TopUniqueRelationCollector {
|
81
|
-
pub fn new(schema: crate::schema::Schema, limit: usize) -> Self {
|
82
|
-
Self { limit, schema }
|
83
|
-
}
|
84
|
-
}
|
85
|
-
|
86
112
|
impl Collector for TopUniqueNodeCollector {
|
87
113
|
type Fruit = HashSet<NodeId>;
|
88
114
|
type Child = TopUniqueNodeSegmentCollector;
|
@@ -117,6 +143,111 @@ impl Collector for TopUniqueNodeCollector {
|
|
117
143
|
}
|
118
144
|
}
|
119
145
|
|
146
|
+
impl SegmentCollector for TopUniqueNodeSegmentCollector {
|
147
|
+
type Fruit = HashSet<NodeId>;
|
148
|
+
|
149
|
+
fn collect(&mut self, doc_id: DocId, _score: Score) {
|
150
|
+
// we already have all unique results we need
|
151
|
+
if self.unique.len() >= self.limit {
|
152
|
+
return;
|
153
|
+
}
|
154
|
+
|
155
|
+
// log and skip documents not in the store. This should not happen
|
156
|
+
let doc = match self.store_reader.get::<TantivyDocument>(doc_id) {
|
157
|
+
Ok(doc) => doc,
|
158
|
+
Err(error) => {
|
159
|
+
warn!("Error while getting document from store: {error:?}");
|
160
|
+
return;
|
161
|
+
}
|
162
|
+
};
|
163
|
+
|
164
|
+
let node = match self.selector {
|
165
|
+
NodeSelector::SourceNodes => {
|
166
|
+
let source_value = self.schema.source_value(&doc).to_string();
|
167
|
+
let source_type = io_maps::u64_to_node_type::<i32>(self.schema.source_type(&doc));
|
168
|
+
let source_subtype = self.schema.source_subtype(&doc).to_string();
|
169
|
+
(source_value, source_type, source_subtype)
|
170
|
+
}
|
171
|
+
NodeSelector::DestinationNodes => {
|
172
|
+
let destination_value = self.schema.target_value(&doc).to_string();
|
173
|
+
let destination_type = io_maps::u64_to_node_type::<i32>(self.schema.target_type(&doc));
|
174
|
+
let destination_subtype = self.schema.target_subtype(&doc).to_string();
|
175
|
+
(destination_value, destination_type, destination_subtype)
|
176
|
+
}
|
177
|
+
};
|
178
|
+
self.unique.insert(node);
|
179
|
+
}
|
180
|
+
|
181
|
+
fn harvest(self) -> Self::Fruit {
|
182
|
+
self.unique
|
183
|
+
}
|
184
|
+
}
|
185
|
+
|
186
|
+
impl TopUniqueNodeCollector2 {
|
187
|
+
pub fn new(selector: NodeSelector, limit: usize) -> Self {
|
188
|
+
Self { limit, selector }
|
189
|
+
}
|
190
|
+
}
|
191
|
+
|
192
|
+
impl Collector for TopUniqueNodeCollector2 {
|
193
|
+
type Fruit = HashSet<Vec<u64>>;
|
194
|
+
type Child = TopUniqueNodeSegmentCollector2;
|
195
|
+
|
196
|
+
fn requires_scoring(&self) -> bool {
|
197
|
+
false
|
198
|
+
}
|
199
|
+
|
200
|
+
fn for_segment(&self, _segment_local_id: SegmentOrdinal, segment: &SegmentReader) -> tantivy::Result<Self::Child> {
|
201
|
+
let fast_field_reader = match self.selector {
|
202
|
+
NodeSelector::SourceNodes => segment.fast_fields().u64("encoded_source_id")?,
|
203
|
+
NodeSelector::DestinationNodes => segment.fast_fields().u64("encoded_target_id")?,
|
204
|
+
};
|
205
|
+
Ok(TopUniqueNodeSegmentCollector2 {
|
206
|
+
limit: self.limit,
|
207
|
+
unique: HashSet::new(),
|
208
|
+
encoded_node_reader: fast_field_reader,
|
209
|
+
})
|
210
|
+
}
|
211
|
+
|
212
|
+
fn merge_fruits(
|
213
|
+
&self,
|
214
|
+
segment_fruits: Vec<<Self::Child as SegmentCollector>::Fruit>,
|
215
|
+
) -> tantivy::Result<Self::Fruit> {
|
216
|
+
let mut unique = HashSet::new();
|
217
|
+
let mut fruits = segment_fruits.into_iter().flatten();
|
218
|
+
let mut fruit = fruits.next();
|
219
|
+
|
220
|
+
while fruit.is_some() && unique.len() < self.limit {
|
221
|
+
unique.insert(fruit.unwrap());
|
222
|
+
fruit = fruits.next();
|
223
|
+
}
|
224
|
+
Ok(unique)
|
225
|
+
}
|
226
|
+
}
|
227
|
+
|
228
|
+
impl SegmentCollector for TopUniqueNodeSegmentCollector2 {
|
229
|
+
type Fruit = HashSet<Vec<u64>>;
|
230
|
+
|
231
|
+
fn collect(&mut self, doc_id: DocId, _score: Score) {
|
232
|
+
// we already have all unique results we need
|
233
|
+
if self.unique.len() >= self.limit {
|
234
|
+
return;
|
235
|
+
}
|
236
|
+
let encoded_node = self.encoded_node_reader.values_for_doc(doc_id).collect::<Vec<u64>>();
|
237
|
+
self.unique.insert(encoded_node);
|
238
|
+
}
|
239
|
+
|
240
|
+
fn harvest(self) -> Self::Fruit {
|
241
|
+
self.unique
|
242
|
+
}
|
243
|
+
}
|
244
|
+
|
245
|
+
impl TopUniqueRelationCollector {
|
246
|
+
pub fn new(schema: crate::schema::Schema, limit: usize) -> Self {
|
247
|
+
Self { limit, schema }
|
248
|
+
}
|
249
|
+
}
|
250
|
+
|
120
251
|
impl Collector for TopUniqueRelationCollector {
|
121
252
|
type Fruit = Vec<TantivyDocument>;
|
122
253
|
type Child = TopUniqueRelationSegmentCollector;
|
@@ -154,8 +285,8 @@ impl Collector for TopUniqueRelationCollector {
|
|
154
285
|
}
|
155
286
|
}
|
156
287
|
|
157
|
-
impl SegmentCollector for
|
158
|
-
type Fruit =
|
288
|
+
impl SegmentCollector for TopUniqueRelationSegmentCollector {
|
289
|
+
type Fruit = HashMap<RelationId, TantivyDocument>;
|
159
290
|
|
160
291
|
fn collect(&mut self, doc_id: DocId, _score: Score) {
|
161
292
|
// we already have all unique results we need
|
@@ -172,21 +303,9 @@ impl SegmentCollector for TopUniqueNodeSegmentCollector {
|
|
172
303
|
}
|
173
304
|
};
|
174
305
|
|
175
|
-
let
|
176
|
-
|
177
|
-
|
178
|
-
let source_type = io_maps::u64_to_node_type::<i32>(self.schema.source_type(&doc));
|
179
|
-
let source_subtype = self.schema.source_subtype(&doc).to_string();
|
180
|
-
(source_value, source_type, source_subtype)
|
181
|
-
}
|
182
|
-
NodeSelector::DestinationNodes => {
|
183
|
-
let destination_value = self.schema.target_value(&doc).to_string();
|
184
|
-
let destination_type = io_maps::u64_to_node_type::<i32>(self.schema.target_type(&doc));
|
185
|
-
let destination_subtype = self.schema.target_subtype(&doc).to_string();
|
186
|
-
(destination_value, destination_type, destination_subtype)
|
187
|
-
}
|
188
|
-
};
|
189
|
-
self.unique.insert(node);
|
306
|
+
let relation_label = self.schema.relationship_label(&doc).to_string();
|
307
|
+
let relation_type = self.schema.relationship(&doc);
|
308
|
+
self.unique.insert((relation_label, relation_type), doc);
|
190
309
|
}
|
191
310
|
|
192
311
|
fn harvest(self) -> Self::Fruit {
|
@@ -194,8 +313,46 @@ impl SegmentCollector for TopUniqueNodeSegmentCollector {
|
|
194
313
|
}
|
195
314
|
}
|
196
315
|
|
197
|
-
impl
|
198
|
-
|
316
|
+
impl TopUniqueRelationCollector2 {
|
317
|
+
pub fn new(limit: usize) -> Self {
|
318
|
+
Self { limit }
|
319
|
+
}
|
320
|
+
}
|
321
|
+
|
322
|
+
impl Collector for TopUniqueRelationCollector2 {
|
323
|
+
type Fruit = HashSet<Vec<u64>>;
|
324
|
+
type Child = TopUniqueRelationSegmentCollector2;
|
325
|
+
|
326
|
+
fn requires_scoring(&self) -> bool {
|
327
|
+
false
|
328
|
+
}
|
329
|
+
|
330
|
+
fn for_segment(&self, _segment_local_id: SegmentOrdinal, segment: &SegmentReader) -> tantivy::Result<Self::Child> {
|
331
|
+
Ok(TopUniqueRelationSegmentCollector2 {
|
332
|
+
limit: self.limit,
|
333
|
+
unique: HashSet::new(),
|
334
|
+
encoded_relation_reader: segment.fast_fields().u64("encoded_relation_id")?,
|
335
|
+
})
|
336
|
+
}
|
337
|
+
|
338
|
+
fn merge_fruits(
|
339
|
+
&self,
|
340
|
+
segment_fruits: Vec<<Self::Child as SegmentCollector>::Fruit>,
|
341
|
+
) -> tantivy::Result<Self::Fruit> {
|
342
|
+
let mut unique = HashSet::new();
|
343
|
+
let mut fruits = segment_fruits.into_iter().flat_map(|map| map.into_iter());
|
344
|
+
let mut fruit = fruits.next();
|
345
|
+
|
346
|
+
while fruit.is_some() && unique.len() < self.limit {
|
347
|
+
unique.insert(fruit.unwrap());
|
348
|
+
fruit = fruits.next();
|
349
|
+
}
|
350
|
+
Ok(unique)
|
351
|
+
}
|
352
|
+
}
|
353
|
+
|
354
|
+
impl SegmentCollector for TopUniqueRelationSegmentCollector2 {
|
355
|
+
type Fruit = HashSet<Vec<u64>>;
|
199
356
|
|
200
357
|
fn collect(&mut self, doc_id: DocId, _score: Score) {
|
201
358
|
// we already have all unique results we need
|
@@ -203,18 +360,11 @@ impl SegmentCollector for TopUniqueRelationSegmentCollector {
|
|
203
360
|
return;
|
204
361
|
}
|
205
362
|
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
return;
|
212
|
-
}
|
213
|
-
};
|
214
|
-
|
215
|
-
let relation_label = self.schema.relationship_label(&doc).to_string();
|
216
|
-
let relation_type = self.schema.relationship(&doc);
|
217
|
-
self.unique.insert((relation_label, relation_type), doc);
|
363
|
+
let relation = self
|
364
|
+
.encoded_relation_reader
|
365
|
+
.values_for_doc(doc_id)
|
366
|
+
.collect::<Vec<u64>>();
|
367
|
+
self.unique.insert(relation);
|
218
368
|
}
|
219
369
|
|
220
370
|
fn harvest(self) -> Self::Fruit {
|
@@ -34,11 +34,14 @@ use tantivy::schema::Field;
|
|
34
34
|
use tantivy::{DocAddress, Index, IndexReader, Searcher};
|
35
35
|
use uuid::Uuid;
|
36
36
|
|
37
|
-
use crate::graph_collector::{
|
37
|
+
use crate::graph_collector::{
|
38
|
+
NodeSelector, TopUniqueNodeCollector, TopUniqueNodeCollector2, TopUniqueRelationCollector,
|
39
|
+
TopUniqueRelationCollector2,
|
40
|
+
};
|
38
41
|
use crate::graph_query_parser::{
|
39
42
|
BoolGraphQuery, BoolNodeQuery, Expression, FuzzyTerm, GraphQuery, GraphQueryParser, Node, NodeQuery, Term,
|
40
43
|
};
|
41
|
-
use crate::schema::{Schema, encode_field_id};
|
44
|
+
use crate::schema::{Schema, decode_node, decode_relation, encode_field_id};
|
42
45
|
use crate::{RelationConfig, io_maps};
|
43
46
|
|
44
47
|
const FUZZY_DISTANCE: u8 = 1;
|
@@ -166,33 +169,62 @@ impl RelationsReaderService {
|
|
166
169
|
let source_query = self.apply_prefilter(source_query, prefilter);
|
167
170
|
let destination_query = self.apply_prefilter(destination_query, prefilter);
|
168
171
|
|
169
|
-
let mut unique_nodes = HashSet::new();
|
170
|
-
|
171
|
-
let collector = TopUniqueNodeCollector::new(self.schema.clone(), NodeSelector::SourceNodes, top_k);
|
172
|
-
let searcher = self.reader.searcher();
|
173
|
-
let mut source_nodes = searcher.search(&source_query, &collector)?;
|
174
|
-
unique_nodes.extend(source_nodes.drain());
|
175
|
-
|
176
|
-
let collector = TopUniqueNodeCollector::new(self.schema.clone(), NodeSelector::DestinationNodes, top_k);
|
177
172
|
let searcher = self.reader.searcher();
|
178
|
-
let mut destination_nodes = searcher.search(&destination_query, &collector)?;
|
179
|
-
unique_nodes.extend(destination_nodes.drain());
|
180
|
-
|
181
|
-
let nodes = unique_nodes
|
182
|
-
.into_iter()
|
183
|
-
.map(|(value, node_type, node_subtype)| RelationNode {
|
184
|
-
value,
|
185
|
-
ntype: node_type,
|
186
|
-
subtype: node_subtype,
|
187
|
-
})
|
188
|
-
.take(top_k)
|
189
|
-
.collect();
|
190
173
|
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
174
|
+
if self.schema.version == 1 {
|
175
|
+
let mut unique_nodes = HashSet::new();
|
176
|
+
|
177
|
+
let collector = TopUniqueNodeCollector::new(self.schema.clone(), NodeSelector::SourceNodes, top_k);
|
178
|
+
let mut source_nodes = searcher.search(&source_query, &collector)?;
|
179
|
+
unique_nodes.extend(source_nodes.drain());
|
180
|
+
|
181
|
+
let collector = TopUniqueNodeCollector::new(self.schema.clone(), NodeSelector::DestinationNodes, top_k);
|
182
|
+
let mut destination_nodes = searcher.search(&destination_query, &collector)?;
|
183
|
+
unique_nodes.extend(destination_nodes.drain());
|
184
|
+
|
185
|
+
let nodes = unique_nodes
|
186
|
+
.into_iter()
|
187
|
+
.map(|(value, node_type, node_subtype)| RelationNode {
|
188
|
+
value,
|
189
|
+
ntype: node_type,
|
190
|
+
subtype: node_subtype,
|
191
|
+
})
|
192
|
+
.take(top_k)
|
193
|
+
.collect();
|
194
|
+
|
195
|
+
let response = nidx_protos::GraphSearchResponse {
|
196
|
+
nodes,
|
197
|
+
..Default::default()
|
198
|
+
};
|
199
|
+
Ok(response)
|
200
|
+
} else {
|
201
|
+
let mut unique_nodes = HashSet::new();
|
202
|
+
|
203
|
+
let collector = TopUniqueNodeCollector2::new(NodeSelector::SourceNodes, top_k);
|
204
|
+
let mut source_nodes = searcher.search(&source_query, &collector)?;
|
205
|
+
unique_nodes.extend(source_nodes.drain());
|
206
|
+
|
207
|
+
let collector = TopUniqueNodeCollector2::new(NodeSelector::DestinationNodes, top_k);
|
208
|
+
let mut destination_nodes = searcher.search(&destination_query, &collector)?;
|
209
|
+
unique_nodes.extend(destination_nodes.drain());
|
210
|
+
|
211
|
+
let nodes = unique_nodes
|
212
|
+
.into_iter()
|
213
|
+
.map(|encoded_node| decode_node(&encoded_node))
|
214
|
+
.map(|(value, node_type, node_subtype)| RelationNode {
|
215
|
+
value,
|
216
|
+
ntype: io_maps::u64_to_node_type(node_type),
|
217
|
+
subtype: node_subtype,
|
218
|
+
})
|
219
|
+
.take(top_k)
|
220
|
+
.collect();
|
221
|
+
|
222
|
+
let response = nidx_protos::GraphSearchResponse {
|
223
|
+
nodes,
|
224
|
+
..Default::default()
|
225
|
+
};
|
226
|
+
Ok(response)
|
227
|
+
}
|
196
228
|
}
|
197
229
|
|
198
230
|
fn relations_graph_search(
|
@@ -206,20 +238,48 @@ impl RelationsReaderService {
|
|
206
238
|
let index_query = parser.parse_bool(query);
|
207
239
|
let index_query = self.apply_prefilter(index_query, prefilter);
|
208
240
|
|
209
|
-
let collector = TopUniqueRelationCollector::new(self.schema.clone(), top_k);
|
210
241
|
let searcher = self.reader.searcher();
|
211
|
-
let matching_docs = searcher.search(&index_query, &collector)?;
|
212
242
|
|
213
|
-
|
214
|
-
.
|
215
|
-
.
|
216
|
-
|
243
|
+
if self.schema.version == 1 {
|
244
|
+
let collector = TopUniqueRelationCollector::new(self.schema.clone(), top_k);
|
245
|
+
let matching_docs = searcher.search(&index_query, &collector)?;
|
246
|
+
|
247
|
+
let relations = matching_docs
|
248
|
+
.into_iter()
|
249
|
+
.map(|doc| nidx_protos::graph_search_response::Relation {
|
250
|
+
relation_type: io_maps::u64_to_relation_type::<i32>(self.schema.relationship(&doc)),
|
251
|
+
label: self.schema.relationship_label(&doc).to_string(),
|
252
|
+
metadata: None,
|
253
|
+
})
|
254
|
+
.collect();
|
255
|
+
|
256
|
+
let response = nidx_protos::GraphSearchResponse {
|
257
|
+
relations,
|
258
|
+
..Default::default()
|
259
|
+
};
|
260
|
+
Ok(response)
|
261
|
+
} else {
|
262
|
+
let collector = TopUniqueRelationCollector2::new(top_k);
|
263
|
+
let matching_docs = searcher.search(&index_query, &collector)?;
|
264
|
+
|
265
|
+
let relations = matching_docs
|
266
|
+
.into_iter()
|
267
|
+
.map(|encoded_relation| {
|
268
|
+
let (relation_type, relation_label) = decode_relation(&encoded_relation);
|
269
|
+
nidx_protos::graph_search_response::Relation {
|
270
|
+
relation_type: io_maps::u64_to_relation_type::<i32>(relation_type),
|
271
|
+
label: relation_label,
|
272
|
+
metadata: None,
|
273
|
+
}
|
274
|
+
})
|
275
|
+
.collect();
|
217
276
|
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
277
|
+
let response = nidx_protos::GraphSearchResponse {
|
278
|
+
relations,
|
279
|
+
..Default::default()
|
280
|
+
};
|
281
|
+
Ok(response)
|
282
|
+
}
|
223
283
|
}
|
224
284
|
|
225
285
|
fn apply_prefilter(&self, query: Box<dyn Query>, prefilter: &PrefilterResult) -> Box<dyn Query> {
|
{nidx_binding-6.3.4.post137 → nidx_binding-6.3.4.post146}/nidx_relation/src/resource_indexer.rs
RENAMED
@@ -19,7 +19,7 @@
|
|
19
19
|
//
|
20
20
|
|
21
21
|
use crate::io_maps;
|
22
|
-
use crate::schema::{Schema, encode_field_id};
|
22
|
+
use crate::schema::{Schema, encode_field_id, encode_node, encode_relation};
|
23
23
|
use anyhow::anyhow;
|
24
24
|
use nidx_protos::noderesources::IndexRelation;
|
25
25
|
use nidx_protos::prost::*;
|
@@ -99,12 +99,24 @@ pub fn index_relations(
|
|
99
99
|
let field = field_key.ok_or(anyhow!("Field ID required for v2"))?;
|
100
100
|
new_doc.add_bytes(schema.resource_id, rid.as_bytes());
|
101
101
|
new_doc.add_bytes(schema.resource_field_id.unwrap(), encode_field_id(rid, field));
|
102
|
+
|
102
103
|
for facet in &index_relation.facets {
|
103
104
|
new_doc.add_facet(schema.facets.unwrap(), Facet::from_text(facet)?);
|
104
105
|
}
|
105
|
-
|
106
|
-
//
|
107
|
-
|
106
|
+
|
107
|
+
// Encode source and target nodes and relation for faster retrieval
|
108
|
+
let encoded_source_id = schema.encoded_source_id.unwrap();
|
109
|
+
for b in encode_node(source_value, source_type, source_subtype) {
|
110
|
+
new_doc.add_u64(encoded_source_id, b);
|
111
|
+
}
|
112
|
+
let encoded_target_id = schema.encoded_target_id.unwrap();
|
113
|
+
for b in encode_node(target_value, target_type, target_subtype) {
|
114
|
+
new_doc.add_u64(encoded_target_id, b);
|
115
|
+
}
|
116
|
+
let encoded_relation_id = schema.encoded_relation_id.unwrap();
|
117
|
+
for b in encode_relation(relationship, label) {
|
118
|
+
new_doc.add_u64(encoded_relation_id, b);
|
119
|
+
}
|
108
120
|
}
|
109
121
|
|
110
122
|
if let Some(metadata) = relation.metadata.as_ref() {
|