nidx-binding 6.3.5.post220__tar.gz → 6.3.5.post232__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.5.post220 → nidx_binding-6.3.5.post232}/PKG-INFO +1 -1
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_protos/pyproject.toml +1 -1
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_text/src/reader.rs +85 -7
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_text/src/resource_indexer.rs +4 -2
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_text/src/schema.rs +9 -4
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/pyproject.toml +1 -1
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/indexer.rs +8 -3
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/lib.rs +1 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/metrics.rs +27 -0
- nidx_binding-6.3.5.post232/src/utilization_tracker.rs +62 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/worker.rs +8 -4
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-0cfce9b29547f8f5bafa6e440f86103be7b8c4ad2fd92db9ac223f4efbe23d10.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-1a561eed00f3dbe868bf5030059793300209179dc8fb73e4b57a54b5e81262fe.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-1d3fca2682e25a01143da92285297f134a6a105a96f64d87e0db3abb219855e4.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-249b3b57c27a71baa823f1fe0f0bba9c9af36f61c28f731e58beea60ec48e687.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-24cb6b683daa42d7125f862e25943ab4be7bf275cd8739f8da4859d701795e1a.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-263c8fce6db5b03bbd012fafdba6943cbee6ed7eb8976cdef4f5b01dde7ca6fd.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-2a5d92fb1638df830a4477a7cdf24e6db6b43034b7bbe74fdfb63e8afe2c4071.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-2b065a363f58caed60e3706603c1260dbf5a4c795604a5b68edda22eb07fec1b.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-3fc3cb39934683de8cd475ce1368c8373453eb1e01f81587d66b9d14b109ce6e.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-48f33b77b7c1633467b0b2efcaa1d3c207e7757e4f1d83b40d15e6ca365f7771.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-4ae09f2c08e2f324bee01bb8487a8f37678a1c5e9d327339235c50d4921a8949.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-4d7a76fa413c9ef0ce2a47ac7bb7e01d3e6a2aabded9487d21010a53efee8852.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-4fcbdd6657c7dc9b60b3a563dd41711b3dbcf72ce063427b7a01f8cddf34c244.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-577109ac00ccfbd38ecaccab94116f2f46a4caf5612afa372cded197123c1e08.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-5db25f97d8578d6d78f2f6bd4b72cc82a9b1b82805c6422d967ac63b20d99db4.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-5ec3233a3a23e926055056d46bdde17836a633066dbb5f349502648cd3ea9a60.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-66edb6ea424d8681927dcddb6bac5f1239175f4775d1f40417ba15054b0c6f19.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-6f9c6d201c1b5712efb68c363bffd3e0169c11f2a8f925e8cd4e8808599ff7b4.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-733c3ebacc86f444bf5e2dd79ade660c291e88a00fc09b722f6e2e191545874c.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-77a245aed9f6f8b9fc643efbd4b1e2e8e99bbba085e3e75a4f29321cd7b2a25c.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-7a3bf27c330c468a596e8a297cf7d8b192e31e67ecc5177c1267f579e8e247c7.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-7a7e59e47b30b12237511fd3d7da2d17b0471ad2b006af48d6a6f587c779692b.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-7dcbb33312cc9f11ae3a6d73b1ace017a9f19a8bf8f10304fc57977c8efeadff.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-7efa7c0d747afc4b6aed0586ff846c27839c3213ff7ee9f30c89b0d0f17e60e3.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-8493140d788604d498a4e48da4158708572ccc9d60185290a00d549cc84533db.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-8493bb0059b013eaca42fd10cd7d04f0d06a8acaed379eff0d23f3229edde9ee.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-87996b3d6c7a2195438d7038015b06949102bce8c7b8cd8db1f83aaf23cbe489.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-8f096d8171b89f9615d18f95d696dc9e4fb3674e103161a713cdc806f7a68506.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-917732a56ee04bf3a6e127319dda8225210869c82f9828d878162394dba4e078.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-95fe4ef93ee90733db1b67ed7987f80b5aac792f1590b979c68b418d1599eb98.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-9b67658569b343d8b4b61ae0a7dc721f367f2ba33c7b69b9e68bfd5c9bff5206.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-9c8062ea55d070afef68309e58fa987eb37fda44e1efbf68c8ba2af7846cc968.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-a06e1d9f6f95e4c4c2b98310ebddcc9d963cc033582bf2e945e8bf3a301b4247.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-a55265c9b07bd1399961a6f1e757201fd0eebe868ddaf96437111113d80fce92.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-a891a37be5c2d7cce775c2dd33726b0318fd3839beab222a1b22bc6174604207.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-a945191bb4b3e37d6823ed3ad499339d007d69983105de8567777d9daf517b28.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-abe9f7832f2bd799ac44008da031e8d8ab52d4f5fbfc2a7e3974e8873bae55b2.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-aca588cca57a85e4d7fcc40c23cd87e57d53d11ca550d78e7e3d5e39e524fcd3.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-b02f8aafc00a7724510772ac41269e368c5bccf03ef7b4590e0ef6fd1a1bf64f.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-b742e17cabe2d64617e9aa64bafc782172f7a4f8023d1b54f952a0fb39f6b2b8.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-b94e349dbc0daec57f8f8f6e9e2dffb06100b1bb2b41d297c9f3b191da37a83d.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-bd9afa22994aba671dbf7b5f89b53c2ee02f53c0442a81265786a6d52d08512f.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-be60554eca98a5899efc6b49785cecd6444a6d39afed9e4a884ce2dbf162012c.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-bf49702b506c9a1650ece1f8e8d9f14834a902f8caefafe30ded55e2790f2188.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-bfb8ae2e860e451b0868a7b1b50a451d998b2105f9fdfd307b26a1775d145e9f.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-bfcd21ed704cd305db5c17fcdec7d92aa4ac501913c9c9514d8ff92928c0c7e7.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-c3ab694650f49a75b146fb877a92e48c4f20f0d99f70f8ec859fbb763b01a1e5.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-c55542bb9fae544d87fae6f30e0fe8a9088d12075f4442ab4fe2fcd05e472234.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-cb29a6556d35ac630ee0aa885dd7341cf9573bd3efd216ff8a887b87686b03db.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-d0a1f341a89f5f14696b10baa72db9d95551c2b7e5fc67308fd52dc03dd98a92.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-d2ad0a0ca2649c9e4873cfcc1fc66d2d07cc45d0f65c560b06d7b5f592f4fa8a.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-d6cfe78eb635ba0b89ca4021a4dc8182d18ab5b197f30149cd28488eba4c1df5.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-d729b56dea00e49dcdba8cf0001e2811da27351eabe98212db3b589f18fc6f32.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-d9658bfd4e7170b41d03f2ddf2446d0bf54171c0d39d53bf20af2b8437f2ec48.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-dbba7b3d3289425bae711aedbf73fbc3699f857f86f84d95c3b556d05c5658b0.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-dcb96b649d6d63a58efd5d445453a4f3d7869a56ff714b69bedf3d616a0473ca.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-ebd876fbf5362a5900e75bc05f2f11c73c406ef7da4e95097fc6a1c3d1b8bc54.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-eef5cc6bce1cc14eba8f3e68971724ef181e88cffcedd74673615f2026b89a62.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/.sqlx/query-ef56d5fefc5774040d1ee397beadb475f6af02768c22f0e583c74062e2e821ce.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/Cargo.lock +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/Cargo.toml +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/README.md +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/migrations/20241007163501_initial.sql +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/migrations/20241211120039_merge_job_priority.sql +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/migrations/20241211121159_basic_indexes.sql +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/migrations/20241212151105_check_segment_records.sql +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/migrations/20250110145554_in_flight_messages.sql +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_binding/Cargo.toml +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_binding/src/lib.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/Cargo.toml +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/src/fuzzy_query.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/src/lib.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/src/query_io.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/src/reader.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/src/request_types.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/src/schema.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/src/search_query.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/src/search_response.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/src/set_query.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/src/stop_words.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/README.md +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/ar.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/az.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/bn.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/ca.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/ch.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/da.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/de.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/el.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/en.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/es.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/eu.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/extract.py +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/fi.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/fr.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/he.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/hu.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/id.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/it.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/kk.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/ne.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/nl.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/no.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/pt.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/ro.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/ru.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/sl.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/sv.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/tg.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/tr.json +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/tests/reader.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_protos/Cargo.toml +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_protos/build.py +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_protos/build.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_protos/src/lib.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_protos/src/nidx.proto +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_relation/Cargo.toml +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_relation/src/graph_collector.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_relation/src/graph_query_parser.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_relation/src/io_maps.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_relation/src/lib.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_relation/src/reader.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_relation/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_relation/src/schema.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_relation/src/top_unique_n.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_relation/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_relation/tests/test_graph_query_parser_search.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_relation/tests/test_graph_search.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_relation/tests/test_reader.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_relation/tests/test_writer.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_tantivy/Cargo.toml +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_tantivy/src/index_reader.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_tantivy/src/lib.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_tests/Cargo.toml +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_tests/src/graph.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_tests/src/lib.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_text/Cargo.toml +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_text/src/lib.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_text/src/prefilter.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_text/src/query_io.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_text/src/request_types.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_text/src/search_query.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_text/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_text/tests/test_flow.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_text/tests/test_search.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_text/tests/test_streaming.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_types/Cargo.toml +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_types/src/lib.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_types/src/prefilter.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_types/src/query_language.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/Cargo.toml +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/config.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/data_point/disk_hnsw.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/data_point/mod.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/data_point/node.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/data_point/ops_hnsw.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/data_point/params.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/data_point/ram_hnsw.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/data_point/tests.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/data_point_provider/mod.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/data_point_provider/reader.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/data_types/data_store.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/data_types/mod.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/data_types/trie.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/data_types/trie_ram.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/formula/mod.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/indexer.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/inverted_index/fst_index.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/inverted_index/map.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/inverted_index.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/lib.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/query_io.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/request_types.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/utils.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/vector_types/dense_f32.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/src/vector_types/mod.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/tests/test_basic_search.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_vector/tests/test_hidden.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/api/grpc.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/api/shards.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/api.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/control.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/errors.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/grpc_server.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/import_export.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/main.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/metadata/deletion.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/metadata/index.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/metadata/index_request.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/metadata/merge_job.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/metadata/segment.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/metadata/shard.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/metadata.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/scheduler/audit_task.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/scheduler/log_merge.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/scheduler/merge_task.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/scheduler/metrics_task.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/scheduler/purge_tasks.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/scheduler/vector_merge.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/scheduler.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/searcher/grpc.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/searcher/index_cache.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/searcher/query_language.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/searcher/query_planner.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/searcher/shard_search.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/searcher/shard_selector.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/searcher/shard_suggest.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/searcher/streams.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/searcher/sync.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/searcher.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/segment_store.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/settings.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/telemetry/duration_layer.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/telemetry/log_format.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/telemetry/middleware.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/telemetry.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/src/tool.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/tests/common/services.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/tests/test_date_range_search.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/tests/test_search_filtering.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/tests/test_search_relations.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/tests/test_search_sorting.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/tests/test_searcher_cluster.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/tests/test_security_search.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/tests/test_shards.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/tests/test_shards_api.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/tests/test_suggest.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/tests/test_synced_searcher.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/tests/test_vector_normalization.rs +0 -0
- {nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/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.5.
|
3
|
+
Version: 6.3.5.post232
|
4
4
|
Classifier: Programming Language :: Rust
|
5
5
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
6
6
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
@@ -4,7 +4,7 @@ build-backend = "pdm.backend"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "nidx_protos"
|
7
|
-
version = "6.3.5.
|
7
|
+
version = "6.3.5.post232"
|
8
8
|
license = { text = "AGPL" }
|
9
9
|
description = "Protobuf definitions for nucliadb/nidx"
|
10
10
|
authors = [ { name = "Nuclia", email = "nucliadb@nuclia.com" }]
|
@@ -35,12 +35,14 @@ use nidx_protos::{
|
|
35
35
|
};
|
36
36
|
use nidx_types::prefilter::{FieldId, PrefilterResult};
|
37
37
|
use tantivy::collector::{Collector, Count, FacetCollector, FacetCounts, SegmentCollector, TopDocs};
|
38
|
-
use tantivy::columnar::Column;
|
38
|
+
use tantivy::columnar::{BytesColumn, Column};
|
39
|
+
use tantivy::fastfield::FacetReader;
|
39
40
|
use tantivy::query::{AllQuery, BooleanQuery, Query, QueryParser, TermQuery};
|
40
41
|
use tantivy::schema::Value;
|
41
42
|
use tantivy::schema::*;
|
42
43
|
use tantivy::{DocAddress, Index, IndexReader, Searcher};
|
43
44
|
use tracing::*;
|
45
|
+
use uuid::Uuid;
|
44
46
|
|
45
47
|
fn facet_count(facet: &str, facets_count: &FacetCounts) -> Vec<FacetResult> {
|
46
48
|
facets_count
|
@@ -89,13 +91,85 @@ impl Debug for TextReaderService {
|
|
89
91
|
}
|
90
92
|
|
91
93
|
struct FieldUuidSegmentCollector {
|
92
|
-
|
94
|
+
uuid_reader: BytesColumn,
|
95
|
+
field_reader: FacetReader,
|
93
96
|
results: Vec<FieldId>,
|
94
97
|
}
|
95
98
|
|
96
99
|
impl SegmentCollector for FieldUuidSegmentCollector {
|
97
100
|
type Fruit = Vec<FieldId>;
|
98
101
|
|
102
|
+
fn collect(&mut self, doc: tantivy::DocId, _score: tantivy::Score) {
|
103
|
+
let uuid_ord = self.uuid_reader.term_ords(doc).next().unwrap();
|
104
|
+
let mut uuid_bytes = Vec::new();
|
105
|
+
self.uuid_reader.ord_to_bytes(uuid_ord, &mut uuid_bytes).unwrap();
|
106
|
+
|
107
|
+
let mut facet_ords = self.field_reader.facet_ords(doc);
|
108
|
+
let mut facet = Facet::root();
|
109
|
+
self.field_reader
|
110
|
+
.facet_from_ord(facet_ords.next().unwrap(), &mut facet)
|
111
|
+
.expect("field facet not found");
|
112
|
+
|
113
|
+
if let Ok(resource_id) = Uuid::parse_str(std::str::from_utf8(&uuid_bytes).unwrap()) {
|
114
|
+
self.results.push(FieldId {
|
115
|
+
resource_id,
|
116
|
+
field_id: facet.to_path_string(),
|
117
|
+
});
|
118
|
+
}
|
119
|
+
}
|
120
|
+
|
121
|
+
fn harvest(self) -> Self::Fruit {
|
122
|
+
self.results
|
123
|
+
}
|
124
|
+
}
|
125
|
+
|
126
|
+
struct FieldUuidCollector;
|
127
|
+
|
128
|
+
impl Collector for FieldUuidCollector {
|
129
|
+
type Fruit = Vec<FieldId>;
|
130
|
+
|
131
|
+
type Child = FieldUuidSegmentCollector;
|
132
|
+
|
133
|
+
fn for_segment(
|
134
|
+
&self,
|
135
|
+
_segment_local_id: tantivy::SegmentOrdinal,
|
136
|
+
segment: &tantivy::SegmentReader,
|
137
|
+
) -> tantivy::Result<Self::Child> {
|
138
|
+
let uuid_reader = segment.fast_fields().bytes("uuid")?.unwrap();
|
139
|
+
let field_reader = segment.facet_reader("field")?;
|
140
|
+
Ok(FieldUuidSegmentCollector {
|
141
|
+
uuid_reader,
|
142
|
+
field_reader,
|
143
|
+
results: vec![],
|
144
|
+
})
|
145
|
+
}
|
146
|
+
|
147
|
+
fn requires_scoring(&self) -> bool {
|
148
|
+
false
|
149
|
+
}
|
150
|
+
|
151
|
+
fn merge_fruits(
|
152
|
+
&self,
|
153
|
+
segment_fruits: Vec<<Self::Child as tantivy::collector::SegmentCollector>::Fruit>,
|
154
|
+
) -> tantivy::Result<Self::Fruit> {
|
155
|
+
Ok(segment_fruits
|
156
|
+
.into_iter()
|
157
|
+
.reduce(|mut a, mut b| {
|
158
|
+
a.append(&mut b);
|
159
|
+
a
|
160
|
+
})
|
161
|
+
.unwrap_or_default())
|
162
|
+
}
|
163
|
+
}
|
164
|
+
|
165
|
+
struct FieldUuidSegmentCollectorV2 {
|
166
|
+
encoded_field_id_reader: Column,
|
167
|
+
results: Vec<FieldId>,
|
168
|
+
}
|
169
|
+
|
170
|
+
impl SegmentCollector for FieldUuidSegmentCollectorV2 {
|
171
|
+
type Fruit = Vec<FieldId>;
|
172
|
+
|
99
173
|
fn collect(&mut self, doc: tantivy::DocId, _score: tantivy::Score) {
|
100
174
|
let mut data = Vec::new();
|
101
175
|
self.encoded_field_id_reader.fill_vals(doc, &mut data);
|
@@ -112,12 +186,12 @@ impl SegmentCollector for FieldUuidSegmentCollector {
|
|
112
186
|
}
|
113
187
|
}
|
114
188
|
|
115
|
-
struct
|
189
|
+
struct FieldUuidCollectorV2;
|
116
190
|
|
117
|
-
impl Collector for
|
191
|
+
impl Collector for FieldUuidCollectorV2 {
|
118
192
|
type Fruit = Vec<FieldId>;
|
119
193
|
|
120
|
-
type Child =
|
194
|
+
type Child = FieldUuidSegmentCollectorV2;
|
121
195
|
|
122
196
|
fn for_segment(
|
123
197
|
&self,
|
@@ -125,7 +199,7 @@ impl Collector for FieldUuidCollector {
|
|
125
199
|
segment: &tantivy::SegmentReader,
|
126
200
|
) -> tantivy::Result<Self::Child> {
|
127
201
|
let encoded_field_id_reader = segment.fast_fields().u64("encoded_field_id")?;
|
128
|
-
Ok(
|
202
|
+
Ok(FieldUuidSegmentCollectorV2 {
|
129
203
|
encoded_field_id_reader,
|
130
204
|
results: vec![],
|
131
205
|
})
|
@@ -189,7 +263,11 @@ impl TextReaderService {
|
|
189
263
|
|
190
264
|
let prefilter_query: Box<dyn Query> = Box::new(BooleanQuery::intersection(subqueries));
|
191
265
|
let searcher = self.reader.searcher();
|
192
|
-
let docs_fulfilled =
|
266
|
+
let docs_fulfilled = if schema.encoded_field_id.is_some() {
|
267
|
+
searcher.search(&prefilter_query, &FieldUuidCollectorV2)?
|
268
|
+
} else {
|
269
|
+
searcher.search(&prefilter_query, &FieldUuidCollector)?
|
270
|
+
};
|
193
271
|
// If none of the fields match the pre-filter, thats all the query planner needs to know.
|
194
272
|
if docs_fulfilled.is_empty() {
|
195
273
|
return Ok(PrefilterResult::None);
|
@@ -80,8 +80,10 @@ pub fn index_document(
|
|
80
80
|
field_doc.add_facet(schema.field, facet_field);
|
81
81
|
field_doc.add_text(schema.text, &text_info.text);
|
82
82
|
|
83
|
-
|
84
|
-
|
83
|
+
if let Some(encoded_field_id) = schema.encoded_field_id {
|
84
|
+
for d in encode_field_id(resource_uuid, &format!("/{field}")) {
|
85
|
+
field_doc.add_u64(encoded_field_id, d);
|
86
|
+
}
|
85
87
|
}
|
86
88
|
|
87
89
|
if let Some(encoded_field_id_bytes) = schema.encoded_field_id_bytes {
|
@@ -45,7 +45,7 @@ pub struct TextSchema {
|
|
45
45
|
pub groups_public: Field,
|
46
46
|
pub groups_with_access: Field,
|
47
47
|
|
48
|
-
pub encoded_field_id: Field
|
48
|
+
pub encoded_field_id: Option<Field>,
|
49
49
|
pub encoded_field_id_bytes: Option<Field>,
|
50
50
|
}
|
51
51
|
|
@@ -85,13 +85,18 @@ impl TextSchema {
|
|
85
85
|
// v4: Field ID encoded as array of u64 for faster retrieval during prefilter
|
86
86
|
// Using a bytes field is slow due to tantivy's implementation being slow with many unique values.
|
87
87
|
// A better implementation is tracked in https://github.com/quickwit-oss/tantivy/issues/2090
|
88
|
-
sb.add_u64_field("encoded_field_id", FAST)
|
89
|
-
} else {
|
88
|
+
Some(sb.add_u64_field("encoded_field_id", FAST))
|
89
|
+
} else if version == 3 {
|
90
90
|
// v3: Field ID encoded as array of u64 for faster retrieval during prefilter
|
91
91
|
// Using a bytes field is slow due to tantivy's implementation being slow with many unique values.
|
92
92
|
// A better implementation is tracked in https://github.com/quickwit-oss/tantivy/issues/2090
|
93
93
|
// The INDEXED flag is unnecessary here, and this is backwards compatible code until we remove it in v4.
|
94
|
-
sb.add_u64_field("encoded_field_id", FAST | INDEXED)
|
94
|
+
Some(sb.add_u64_field("encoded_field_id", FAST | INDEXED))
|
95
|
+
} else if version == 2 {
|
96
|
+
// v2 did not have the field indexed
|
97
|
+
Some(sb.add_u64_field("encoded_field_id", FAST))
|
98
|
+
} else {
|
99
|
+
None
|
95
100
|
};
|
96
101
|
|
97
102
|
let encoded_field_id_bytes = if version >= 4 {
|
@@ -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.5.
|
16
|
+
version = "6.3.5.post232"
|
17
17
|
|
18
18
|
[project.urls]
|
19
19
|
Homepage = "https://nuclia.com"
|
@@ -42,10 +42,9 @@ use crate::errors::NidxError;
|
|
42
42
|
use crate::grpc_server::GrpcServer;
|
43
43
|
use crate::metrics::IndexKindLabels;
|
44
44
|
use crate::metrics::OperationStatusLabels;
|
45
|
-
use crate::metrics::indexer
|
46
|
-
use crate::metrics::indexer::PER_INDEX_INDEXING_TIME;
|
47
|
-
use crate::metrics::indexer::TOTAL_INDEXING_TIME;
|
45
|
+
use crate::metrics::indexer::*;
|
48
46
|
use crate::segment_store::pack_and_upload;
|
47
|
+
use crate::utilization_tracker::UtilizationTracker;
|
49
48
|
use crate::{Settings, metadata::*};
|
50
49
|
|
51
50
|
#[cfg(feature = "telemetry")]
|
@@ -138,7 +137,12 @@ pub async fn run_nats(settings: Settings, shutdown: CancellationToken) -> anyhow
|
|
138
137
|
None => tempfile::env::temp_dir(),
|
139
138
|
};
|
140
139
|
|
140
|
+
let utilization = UtilizationTracker::new(|busy, duration| {
|
141
|
+
INDEXING_BUSY.get_or_create(&busy.into()).inc_by(duration.as_secs_f64());
|
142
|
+
});
|
143
|
+
|
141
144
|
while !shutdown.is_cancelled() {
|
145
|
+
utilization.idle().await;
|
142
146
|
let sub_msg = tokio::select! {
|
143
147
|
sub_msg = subscription.next() => sub_msg,
|
144
148
|
_ = shutdown.cancelled() => { return Ok(()) }
|
@@ -164,6 +168,7 @@ pub async fn run_nats(settings: Settings, shutdown: CancellationToken) -> anyhow
|
|
164
168
|
continue;
|
165
169
|
}
|
166
170
|
|
171
|
+
utilization.busy().await;
|
167
172
|
let span = info_span!("indexer_message", ?seq);
|
168
173
|
let (msg, acker) = msg.split();
|
169
174
|
|
@@ -127,6 +127,31 @@ impl OperationStatusLabels {
|
|
127
127
|
}
|
128
128
|
}
|
129
129
|
|
130
|
+
#[derive(Clone, Debug, PartialEq, Eq, Hash, EncodeLabelValue)]
|
131
|
+
enum Utilization {
|
132
|
+
Free,
|
133
|
+
Busy,
|
134
|
+
}
|
135
|
+
|
136
|
+
#[derive(Clone, Debug, EncodeLabelSet, PartialEq, Eq, Hash)]
|
137
|
+
pub struct UtilizationLabels {
|
138
|
+
status: Utilization,
|
139
|
+
}
|
140
|
+
|
141
|
+
impl From<bool> for UtilizationLabels {
|
142
|
+
fn from(busy: bool) -> Self {
|
143
|
+
if busy {
|
144
|
+
Self {
|
145
|
+
status: Utilization::Busy,
|
146
|
+
}
|
147
|
+
} else {
|
148
|
+
Self {
|
149
|
+
status: Utilization::Free,
|
150
|
+
}
|
151
|
+
}
|
152
|
+
}
|
153
|
+
}
|
154
|
+
|
130
155
|
pub mod common {
|
131
156
|
metrics! {
|
132
157
|
SPAN_DURATION: Family<Vec<(String, String)>, Histogram>{exponential_buckets(0.001, 2.0, 20)} as "span_duration_seconds" ("Duration of a tracing span"),
|
@@ -169,6 +194,7 @@ pub mod indexer {
|
|
169
194
|
INDEXING_COUNTER: Family<OperationStatusLabels, Counter> as "indexer_message_count" ("Number of indexing operations per status"),
|
170
195
|
TOTAL_INDEXING_TIME: Histogram[exponential_buckets(0.01, 2.0, 12)] as "total_indexing_time_seconds" ("Time it took to process an entire index message"),
|
171
196
|
PER_INDEX_INDEXING_TIME: Family<IndexKindLabels, Histogram>{exponential_buckets(0.01, 2.0, 12)} as "indexing_time_seconds" ("Time it took to index a resource to an index"),
|
197
|
+
INDEXING_BUSY: Family<UtilizationLabels, Counter::<f64, AtomicU64>> as "indexer_utilization_seconds" ("Time spent in free/busy status"),
|
172
198
|
}
|
173
199
|
}
|
174
200
|
|
@@ -176,5 +202,6 @@ pub mod worker {
|
|
176
202
|
metrics! {
|
177
203
|
MERGE_COUNTER: Family<OperationStatusLabels, Counter> as "merge_job_count" ("Number of merge jobs per status"),
|
178
204
|
PER_INDEX_MERGE_TIME: Family<IndexKindLabels, Histogram>{exponential_buckets(1.0, 2.0, 12)} as "merge_time_seconds" ("Time it took to run a merge job"),
|
205
|
+
WORKER_BUSY: Family<UtilizationLabels, Counter::<f64, AtomicU64>> as "merge_worker_utilization_seconds" ("Time spent in free/busy status"),
|
179
206
|
}
|
180
207
|
}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
// Copyright (C) 2021 Bosutech XXI S.L.
|
2
|
+
//
|
3
|
+
// nucliadb is offered under the AGPL v3.0 and as commercial software.
|
4
|
+
// For commercial licensing, contact us at info@nuclia.com.
|
5
|
+
//
|
6
|
+
// AGPL:
|
7
|
+
// This program is free software: you can redistribute it and/or modify
|
8
|
+
// it under the terms of the GNU Affero General Public License as
|
9
|
+
// published by the Free Software Foundation, either version 3 of the
|
10
|
+
// License, or (at your option) any later version.
|
11
|
+
//
|
12
|
+
// This program is distributed in the hope that it will be useful,
|
13
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
// GNU Affero General Public License for more details.
|
16
|
+
//
|
17
|
+
// You should have received a copy of the GNU Affero General Public License
|
18
|
+
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
//
|
20
|
+
|
21
|
+
use std::time::{Duration, Instant};
|
22
|
+
|
23
|
+
use tokio::{sync::mpsc::*, time::sleep};
|
24
|
+
|
25
|
+
pub struct UtilizationTracker {
|
26
|
+
channel: Sender<bool>,
|
27
|
+
}
|
28
|
+
|
29
|
+
impl UtilizationTracker {
|
30
|
+
pub fn new(publish: impl Fn(bool, Duration) + Send + 'static) -> Self {
|
31
|
+
let (tx, rx) = channel(10);
|
32
|
+
tokio::spawn(run(publish, rx));
|
33
|
+
Self { channel: tx }
|
34
|
+
}
|
35
|
+
|
36
|
+
pub async fn busy(&self) {
|
37
|
+
let _ = self.channel.send(true).await;
|
38
|
+
}
|
39
|
+
|
40
|
+
pub async fn idle(&self) {
|
41
|
+
let _ = self.channel.send(false).await;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
async fn run(publish: impl Fn(bool, Duration), mut channel: Receiver<bool>) {
|
46
|
+
let mut busy = false;
|
47
|
+
let mut since = Instant::now();
|
48
|
+
loop {
|
49
|
+
tokio::select! {
|
50
|
+
rxed = channel.recv() => {
|
51
|
+
let Some(rxed) = rxed else { break };
|
52
|
+
publish(busy, since.elapsed());
|
53
|
+
busy = rxed;
|
54
|
+
since = Instant::now();
|
55
|
+
},
|
56
|
+
_ = sleep(Duration::from_secs(30)) => {
|
57
|
+
publish(busy, since.elapsed());
|
58
|
+
since = Instant::now();
|
59
|
+
}
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
@@ -39,11 +39,9 @@ use tracing::*;
|
|
39
39
|
use crate::{
|
40
40
|
NidxMetadata, Settings,
|
41
41
|
metadata::{Deletion, Index, IndexKind, MergeJob, NewSegment, Segment},
|
42
|
-
metrics::{
|
43
|
-
IndexKindLabels, OperationStatusLabels,
|
44
|
-
worker::{MERGE_COUNTER, PER_INDEX_MERGE_TIME},
|
45
|
-
},
|
42
|
+
metrics::{IndexKindLabels, OperationStatusLabels, worker::*},
|
46
43
|
segment_store::{download_segment, pack_and_upload},
|
44
|
+
utilization_tracker::UtilizationTracker,
|
47
45
|
};
|
48
46
|
|
49
47
|
pub async fn run(settings: Settings, shutdown: CancellationToken) -> anyhow::Result<()> {
|
@@ -55,9 +53,14 @@ pub async fn run(settings: Settings, shutdown: CancellationToken) -> anyhow::Res
|
|
55
53
|
None => tempfile::env::temp_dir(),
|
56
54
|
};
|
57
55
|
|
56
|
+
let utilization = UtilizationTracker::new(|busy, duration| {
|
57
|
+
WORKER_BUSY.get_or_create(&busy.into()).inc_by(duration.as_secs_f64());
|
58
|
+
});
|
59
|
+
|
58
60
|
while !shutdown.is_cancelled() {
|
59
61
|
let job = MergeJob::take(&meta.pool).await?;
|
60
62
|
if let Some(job) = job {
|
63
|
+
utilization.busy().await;
|
61
64
|
let span = info_span!("worker_job", ?job.id);
|
62
65
|
info!(job.id, "Running job");
|
63
66
|
|
@@ -85,6 +88,7 @@ pub async fn run(settings: Settings, shutdown: CancellationToken) -> anyhow::Res
|
|
85
88
|
// Stop keep alives
|
86
89
|
keepalive.abort();
|
87
90
|
} else {
|
91
|
+
utilization.idle().await;
|
88
92
|
debug!("No jobs, waiting for more");
|
89
93
|
tokio::select! {
|
90
94
|
_ = tokio::time::sleep(Duration::from_secs(5)) => {},
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/migrations/20241007163501_initial.sql
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/src/request_types.rs
RENAMED
File without changes
|
{nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/src/resource_indexer.rs
RENAMED
File without changes
|
File without changes
|
{nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/src/search_query.rs
RENAMED
File without changes
|
{nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/src/search_response.rs
RENAMED
File without changes
|
File without changes
|
File without changes
|
{nidx_binding-6.3.5.post220 → nidx_binding-6.3.5.post232}/nidx_paragraph/stop_words/README.md
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|