nidx-binding 6.3.5.post215__tar.gz → 6.3.5.post220__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.
Files changed (244) hide show
  1. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/PKG-INFO +1 -1
  2. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_protos/pyproject.toml +1 -1
  3. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_text/src/lib.rs +1 -1
  4. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_text/src/reader.rs +7 -86
  5. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_text/src/resource_indexer.rs +8 -5
  6. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_text/src/schema.rs +59 -8
  7. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/pyproject.toml +1 -1
  8. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/metadata/index.rs +2 -2
  9. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-0cfce9b29547f8f5bafa6e440f86103be7b8c4ad2fd92db9ac223f4efbe23d10.json +0 -0
  10. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-1a561eed00f3dbe868bf5030059793300209179dc8fb73e4b57a54b5e81262fe.json +0 -0
  11. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-1d3fca2682e25a01143da92285297f134a6a105a96f64d87e0db3abb219855e4.json +0 -0
  12. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-249b3b57c27a71baa823f1fe0f0bba9c9af36f61c28f731e58beea60ec48e687.json +0 -0
  13. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-24cb6b683daa42d7125f862e25943ab4be7bf275cd8739f8da4859d701795e1a.json +0 -0
  14. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-263c8fce6db5b03bbd012fafdba6943cbee6ed7eb8976cdef4f5b01dde7ca6fd.json +0 -0
  15. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-2a5d92fb1638df830a4477a7cdf24e6db6b43034b7bbe74fdfb63e8afe2c4071.json +0 -0
  16. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-2b065a363f58caed60e3706603c1260dbf5a4c795604a5b68edda22eb07fec1b.json +0 -0
  17. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-3fc3cb39934683de8cd475ce1368c8373453eb1e01f81587d66b9d14b109ce6e.json +0 -0
  18. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-48f33b77b7c1633467b0b2efcaa1d3c207e7757e4f1d83b40d15e6ca365f7771.json +0 -0
  19. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-4ae09f2c08e2f324bee01bb8487a8f37678a1c5e9d327339235c50d4921a8949.json +0 -0
  20. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-4d7a76fa413c9ef0ce2a47ac7bb7e01d3e6a2aabded9487d21010a53efee8852.json +0 -0
  21. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-4fcbdd6657c7dc9b60b3a563dd41711b3dbcf72ce063427b7a01f8cddf34c244.json +0 -0
  22. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-577109ac00ccfbd38ecaccab94116f2f46a4caf5612afa372cded197123c1e08.json +0 -0
  23. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-5db25f97d8578d6d78f2f6bd4b72cc82a9b1b82805c6422d967ac63b20d99db4.json +0 -0
  24. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-5ec3233a3a23e926055056d46bdde17836a633066dbb5f349502648cd3ea9a60.json +0 -0
  25. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-66edb6ea424d8681927dcddb6bac5f1239175f4775d1f40417ba15054b0c6f19.json +0 -0
  26. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-6f9c6d201c1b5712efb68c363bffd3e0169c11f2a8f925e8cd4e8808599ff7b4.json +0 -0
  27. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-733c3ebacc86f444bf5e2dd79ade660c291e88a00fc09b722f6e2e191545874c.json +0 -0
  28. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-77a245aed9f6f8b9fc643efbd4b1e2e8e99bbba085e3e75a4f29321cd7b2a25c.json +0 -0
  29. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-7a3bf27c330c468a596e8a297cf7d8b192e31e67ecc5177c1267f579e8e247c7.json +0 -0
  30. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-7a7e59e47b30b12237511fd3d7da2d17b0471ad2b006af48d6a6f587c779692b.json +0 -0
  31. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-7dcbb33312cc9f11ae3a6d73b1ace017a9f19a8bf8f10304fc57977c8efeadff.json +0 -0
  32. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-7efa7c0d747afc4b6aed0586ff846c27839c3213ff7ee9f30c89b0d0f17e60e3.json +0 -0
  33. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-8493140d788604d498a4e48da4158708572ccc9d60185290a00d549cc84533db.json +0 -0
  34. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-8493bb0059b013eaca42fd10cd7d04f0d06a8acaed379eff0d23f3229edde9ee.json +0 -0
  35. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-87996b3d6c7a2195438d7038015b06949102bce8c7b8cd8db1f83aaf23cbe489.json +0 -0
  36. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-8f096d8171b89f9615d18f95d696dc9e4fb3674e103161a713cdc806f7a68506.json +0 -0
  37. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-917732a56ee04bf3a6e127319dda8225210869c82f9828d878162394dba4e078.json +0 -0
  38. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-95fe4ef93ee90733db1b67ed7987f80b5aac792f1590b979c68b418d1599eb98.json +0 -0
  39. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-9b67658569b343d8b4b61ae0a7dc721f367f2ba33c7b69b9e68bfd5c9bff5206.json +0 -0
  40. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-9c8062ea55d070afef68309e58fa987eb37fda44e1efbf68c8ba2af7846cc968.json +0 -0
  41. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-a06e1d9f6f95e4c4c2b98310ebddcc9d963cc033582bf2e945e8bf3a301b4247.json +0 -0
  42. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-a55265c9b07bd1399961a6f1e757201fd0eebe868ddaf96437111113d80fce92.json +0 -0
  43. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-a891a37be5c2d7cce775c2dd33726b0318fd3839beab222a1b22bc6174604207.json +0 -0
  44. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-a945191bb4b3e37d6823ed3ad499339d007d69983105de8567777d9daf517b28.json +0 -0
  45. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-abe9f7832f2bd799ac44008da031e8d8ab52d4f5fbfc2a7e3974e8873bae55b2.json +0 -0
  46. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-aca588cca57a85e4d7fcc40c23cd87e57d53d11ca550d78e7e3d5e39e524fcd3.json +0 -0
  47. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-b02f8aafc00a7724510772ac41269e368c5bccf03ef7b4590e0ef6fd1a1bf64f.json +0 -0
  48. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-b742e17cabe2d64617e9aa64bafc782172f7a4f8023d1b54f952a0fb39f6b2b8.json +0 -0
  49. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-b94e349dbc0daec57f8f8f6e9e2dffb06100b1bb2b41d297c9f3b191da37a83d.json +0 -0
  50. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-bd9afa22994aba671dbf7b5f89b53c2ee02f53c0442a81265786a6d52d08512f.json +0 -0
  51. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-be60554eca98a5899efc6b49785cecd6444a6d39afed9e4a884ce2dbf162012c.json +0 -0
  52. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-bf49702b506c9a1650ece1f8e8d9f14834a902f8caefafe30ded55e2790f2188.json +0 -0
  53. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-bfb8ae2e860e451b0868a7b1b50a451d998b2105f9fdfd307b26a1775d145e9f.json +0 -0
  54. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-bfcd21ed704cd305db5c17fcdec7d92aa4ac501913c9c9514d8ff92928c0c7e7.json +0 -0
  55. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-c3ab694650f49a75b146fb877a92e48c4f20f0d99f70f8ec859fbb763b01a1e5.json +0 -0
  56. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-c55542bb9fae544d87fae6f30e0fe8a9088d12075f4442ab4fe2fcd05e472234.json +0 -0
  57. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-cb29a6556d35ac630ee0aa885dd7341cf9573bd3efd216ff8a887b87686b03db.json +0 -0
  58. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-d0a1f341a89f5f14696b10baa72db9d95551c2b7e5fc67308fd52dc03dd98a92.json +0 -0
  59. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-d2ad0a0ca2649c9e4873cfcc1fc66d2d07cc45d0f65c560b06d7b5f592f4fa8a.json +0 -0
  60. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-d6cfe78eb635ba0b89ca4021a4dc8182d18ab5b197f30149cd28488eba4c1df5.json +0 -0
  61. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-d729b56dea00e49dcdba8cf0001e2811da27351eabe98212db3b589f18fc6f32.json +0 -0
  62. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-d9658bfd4e7170b41d03f2ddf2446d0bf54171c0d39d53bf20af2b8437f2ec48.json +0 -0
  63. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-dbba7b3d3289425bae711aedbf73fbc3699f857f86f84d95c3b556d05c5658b0.json +0 -0
  64. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-dcb96b649d6d63a58efd5d445453a4f3d7869a56ff714b69bedf3d616a0473ca.json +0 -0
  65. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-ebd876fbf5362a5900e75bc05f2f11c73c406ef7da4e95097fc6a1c3d1b8bc54.json +0 -0
  66. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-eef5cc6bce1cc14eba8f3e68971724ef181e88cffcedd74673615f2026b89a62.json +0 -0
  67. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/.sqlx/query-ef56d5fefc5774040d1ee397beadb475f6af02768c22f0e583c74062e2e821ce.json +0 -0
  68. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/Cargo.lock +0 -0
  69. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/Cargo.toml +0 -0
  70. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/README.md +0 -0
  71. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/migrations/20241007163501_initial.sql +0 -0
  72. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/migrations/20241211120039_merge_job_priority.sql +0 -0
  73. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/migrations/20241211121159_basic_indexes.sql +0 -0
  74. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/migrations/20241212151105_check_segment_records.sql +0 -0
  75. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/migrations/20250110145554_in_flight_messages.sql +0 -0
  76. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_binding/Cargo.toml +0 -0
  77. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_binding/src/lib.rs +0 -0
  78. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/Cargo.toml +0 -0
  79. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/src/fuzzy_query.rs +0 -0
  80. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/src/lib.rs +0 -0
  81. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/src/query_io.rs +0 -0
  82. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/src/reader.rs +0 -0
  83. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/src/request_types.rs +0 -0
  84. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/src/resource_indexer.rs +0 -0
  85. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/src/schema.rs +0 -0
  86. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/src/search_query.rs +0 -0
  87. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/src/search_response.rs +0 -0
  88. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/src/set_query.rs +0 -0
  89. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/src/stop_words.rs +0 -0
  90. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/README.md +0 -0
  91. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/ar.json +0 -0
  92. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/az.json +0 -0
  93. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/bn.json +0 -0
  94. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/ca.json +0 -0
  95. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/ch.json +0 -0
  96. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/da.json +0 -0
  97. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/de.json +0 -0
  98. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/el.json +0 -0
  99. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/en.json +0 -0
  100. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/es.json +0 -0
  101. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/eu.json +0 -0
  102. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/extract.py +0 -0
  103. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/fi.json +0 -0
  104. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/fr.json +0 -0
  105. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/he.json +0 -0
  106. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/hu.json +0 -0
  107. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/id.json +0 -0
  108. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/it.json +0 -0
  109. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/kk.json +0 -0
  110. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/ne.json +0 -0
  111. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/nl.json +0 -0
  112. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/no.json +0 -0
  113. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/pt.json +0 -0
  114. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/ro.json +0 -0
  115. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/ru.json +0 -0
  116. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/sl.json +0 -0
  117. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/sv.json +0 -0
  118. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/tg.json +0 -0
  119. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/stop_words/tr.json +0 -0
  120. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/tests/common/mod.rs +0 -0
  121. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_paragraph/tests/reader.rs +0 -0
  122. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_protos/Cargo.toml +0 -0
  123. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_protos/build.py +0 -0
  124. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_protos/build.rs +0 -0
  125. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_protos/src/lib.rs +0 -0
  126. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_protos/src/nidx.proto +0 -0
  127. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_relation/Cargo.toml +0 -0
  128. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_relation/src/graph_collector.rs +0 -0
  129. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_relation/src/graph_query_parser.rs +0 -0
  130. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_relation/src/io_maps.rs +0 -0
  131. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_relation/src/lib.rs +0 -0
  132. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_relation/src/reader.rs +0 -0
  133. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_relation/src/resource_indexer.rs +0 -0
  134. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_relation/src/schema.rs +0 -0
  135. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_relation/src/top_unique_n.rs +0 -0
  136. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_relation/tests/common/mod.rs +0 -0
  137. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_relation/tests/test_graph_query_parser_search.rs +0 -0
  138. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_relation/tests/test_graph_search.rs +0 -0
  139. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_relation/tests/test_reader.rs +0 -0
  140. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_relation/tests/test_writer.rs +0 -0
  141. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_tantivy/Cargo.toml +0 -0
  142. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_tantivy/src/index_reader.rs +0 -0
  143. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_tantivy/src/lib.rs +0 -0
  144. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_tests/Cargo.toml +0 -0
  145. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_tests/src/graph.rs +0 -0
  146. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_tests/src/lib.rs +0 -0
  147. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_text/Cargo.toml +0 -0
  148. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_text/src/prefilter.rs +0 -0
  149. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_text/src/query_io.rs +0 -0
  150. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_text/src/request_types.rs +0 -0
  151. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_text/src/search_query.rs +0 -0
  152. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_text/tests/common/mod.rs +0 -0
  153. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_text/tests/test_flow.rs +0 -0
  154. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_text/tests/test_search.rs +0 -0
  155. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_text/tests/test_streaming.rs +0 -0
  156. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_types/Cargo.toml +0 -0
  157. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_types/src/lib.rs +0 -0
  158. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_types/src/prefilter.rs +0 -0
  159. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_types/src/query_language.rs +0 -0
  160. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/Cargo.toml +0 -0
  161. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/config.rs +0 -0
  162. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/data_point/disk_hnsw.rs +0 -0
  163. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/data_point/mod.rs +0 -0
  164. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/data_point/node.rs +0 -0
  165. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/data_point/ops_hnsw.rs +0 -0
  166. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/data_point/params.rs +0 -0
  167. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/data_point/ram_hnsw.rs +0 -0
  168. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/data_point/tests.rs +0 -0
  169. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/data_point_provider/mod.rs +0 -0
  170. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/data_point_provider/reader.rs +0 -0
  171. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/data_types/data_store.rs +0 -0
  172. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/data_types/mod.rs +0 -0
  173. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/data_types/trie.rs +0 -0
  174. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/data_types/trie_ram.rs +0 -0
  175. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/formula/mod.rs +0 -0
  176. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/indexer.rs +0 -0
  177. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/inverted_index/fst_index.rs +0 -0
  178. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/inverted_index/map.rs +0 -0
  179. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/inverted_index.rs +0 -0
  180. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/lib.rs +0 -0
  181. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/query_io.rs +0 -0
  182. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/request_types.rs +0 -0
  183. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/utils.rs +0 -0
  184. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/vector_types/dense_f32.rs +0 -0
  185. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/src/vector_types/mod.rs +0 -0
  186. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/tests/common/mod.rs +0 -0
  187. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/tests/test_basic_search.rs +0 -0
  188. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/nidx_vector/tests/test_hidden.rs +0 -0
  189. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/api/grpc.rs +0 -0
  190. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/api/shards.rs +0 -0
  191. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/api.rs +0 -0
  192. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/control.rs +0 -0
  193. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/errors.rs +0 -0
  194. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/grpc_server.rs +0 -0
  195. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/import_export.rs +0 -0
  196. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/indexer.rs +0 -0
  197. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/lib.rs +0 -0
  198. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/main.rs +0 -0
  199. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/metadata/deletion.rs +0 -0
  200. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/metadata/index_request.rs +0 -0
  201. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/metadata/merge_job.rs +0 -0
  202. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/metadata/segment.rs +0 -0
  203. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/metadata/shard.rs +0 -0
  204. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/metadata.rs +0 -0
  205. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/metrics.rs +0 -0
  206. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/scheduler/audit_task.rs +0 -0
  207. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/scheduler/log_merge.rs +0 -0
  208. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/scheduler/merge_task.rs +0 -0
  209. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/scheduler/metrics_task.rs +0 -0
  210. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/scheduler/purge_tasks.rs +0 -0
  211. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/scheduler/vector_merge.rs +0 -0
  212. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/scheduler.rs +0 -0
  213. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/searcher/grpc.rs +0 -0
  214. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/searcher/index_cache.rs +0 -0
  215. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/searcher/query_language.rs +0 -0
  216. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/searcher/query_planner.rs +0 -0
  217. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/searcher/shard_search.rs +0 -0
  218. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/searcher/shard_selector.rs +0 -0
  219. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/searcher/shard_suggest.rs +0 -0
  220. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/searcher/streams.rs +0 -0
  221. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/searcher/sync.rs +0 -0
  222. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/searcher.rs +0 -0
  223. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/segment_store.rs +0 -0
  224. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/settings.rs +0 -0
  225. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/telemetry/duration_layer.rs +0 -0
  226. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/telemetry/log_format.rs +0 -0
  227. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/telemetry/middleware.rs +0 -0
  228. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/telemetry.rs +0 -0
  229. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/tool.rs +0 -0
  230. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/src/worker.rs +0 -0
  231. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/tests/common/mod.rs +0 -0
  232. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/tests/common/services.rs +0 -0
  233. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/tests/test_date_range_search.rs +0 -0
  234. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/tests/test_search_filtering.rs +0 -0
  235. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/tests/test_search_relations.rs +0 -0
  236. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/tests/test_search_sorting.rs +0 -0
  237. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/tests/test_searcher_cluster.rs +0 -0
  238. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/tests/test_security_search.rs +0 -0
  239. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/tests/test_shards.rs +0 -0
  240. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/tests/test_shards_api.rs +0 -0
  241. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/tests/test_suggest.rs +0 -0
  242. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/tests/test_synced_searcher.rs +0 -0
  243. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/tests/test_vector_normalization.rs +0 -0
  244. {nidx_binding-6.3.5.post215 → nidx_binding-6.3.5.post220}/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.post215
3
+ Version: 6.3.5.post220
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.post215"
7
+ version = "6.3.5.post220"
8
8
  license = { text = "AGPL" }
9
9
  description = "Protobuf definitions for nucliadb/nidx"
10
10
  authors = [ { name = "Nuclia", email = "nucliadb@nuclia.com" }]
@@ -61,7 +61,7 @@ impl Default for TextConfig {
61
61
  Self {
62
62
  // This is the default version when creating a new index.
63
63
  // Should typically be set to the latest supported version
64
- version: 3,
64
+ version: 4,
65
65
  }
66
66
  }
67
67
  }
@@ -35,14 +35,12 @@ 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::{BytesColumn, Column};
39
- use tantivy::fastfield::FacetReader;
38
+ use tantivy::columnar::Column;
40
39
  use tantivy::query::{AllQuery, BooleanQuery, Query, QueryParser, TermQuery};
41
40
  use tantivy::schema::Value;
42
41
  use tantivy::schema::*;
43
42
  use tantivy::{DocAddress, Index, IndexReader, Searcher};
44
43
  use tracing::*;
45
- use uuid::Uuid;
46
44
 
47
45
  fn facet_count(facet: &str, facets_count: &FacetCounts) -> Vec<FacetResult> {
48
46
  facets_count
@@ -91,83 +89,11 @@ impl Debug for TextReaderService {
91
89
  }
92
90
 
93
91
  struct FieldUuidSegmentCollector {
94
- uuid_reader: BytesColumn,
95
- field_reader: FacetReader,
96
- results: Vec<FieldId>,
97
- }
98
-
99
- impl SegmentCollector for FieldUuidSegmentCollector {
100
- type Fruit = Vec<FieldId>;
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
92
  encoded_field_id_reader: Column,
167
93
  results: Vec<FieldId>,
168
94
  }
169
95
 
170
- impl SegmentCollector for FieldUuidSegmentCollectorV2 {
96
+ impl SegmentCollector for FieldUuidSegmentCollector {
171
97
  type Fruit = Vec<FieldId>;
172
98
 
173
99
  fn collect(&mut self, doc: tantivy::DocId, _score: tantivy::Score) {
@@ -186,12 +112,12 @@ impl SegmentCollector for FieldUuidSegmentCollectorV2 {
186
112
  }
187
113
  }
188
114
 
189
- struct FieldUuidCollectorV2;
115
+ struct FieldUuidCollector;
190
116
 
191
- impl Collector for FieldUuidCollectorV2 {
117
+ impl Collector for FieldUuidCollector {
192
118
  type Fruit = Vec<FieldId>;
193
119
 
194
- type Child = FieldUuidSegmentCollectorV2;
120
+ type Child = FieldUuidSegmentCollector;
195
121
 
196
122
  fn for_segment(
197
123
  &self,
@@ -199,7 +125,7 @@ impl Collector for FieldUuidCollectorV2 {
199
125
  segment: &tantivy::SegmentReader,
200
126
  ) -> tantivy::Result<Self::Child> {
201
127
  let encoded_field_id_reader = segment.fast_fields().u64("encoded_field_id")?;
202
- Ok(FieldUuidSegmentCollectorV2 {
128
+ Ok(FieldUuidSegmentCollector {
203
129
  encoded_field_id_reader,
204
130
  results: vec![],
205
131
  })
@@ -263,12 +189,7 @@ impl TextReaderService {
263
189
 
264
190
  let prefilter_query: Box<dyn Query> = Box::new(BooleanQuery::intersection(subqueries));
265
191
  let searcher = self.reader.searcher();
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
- };
271
-
192
+ let docs_fulfilled = searcher.search(&prefilter_query, &FieldUuidCollector)?;
272
193
  // If none of the fields match the pre-filter, thats all the query planner needs to know.
273
194
  if docs_fulfilled.is_empty() {
274
195
  return Ok(PrefilterResult::None);
@@ -22,7 +22,7 @@ use anyhow::anyhow;
22
22
  use nidx_tantivy::TantivyIndexer;
23
23
  use tantivy::{doc, schema::Facet};
24
24
 
25
- use crate::schema::{TextSchema, encode_field_id, timestamp_to_datetime_utc};
25
+ use crate::schema::{TextSchema, encode_field_id, encode_field_id_bytes, timestamp_to_datetime_utc};
26
26
 
27
27
  pub fn index_document(
28
28
  writer: &mut TantivyIndexer,
@@ -80,10 +80,13 @@ 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
- 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
- }
83
+ for d in encode_field_id(resource_uuid, &format!("/{field}")) {
84
+ field_doc.add_u64(schema.encoded_field_id, d);
85
+ }
86
+
87
+ if let Some(encoded_field_id_bytes) = schema.encoded_field_id_bytes {
88
+ let encoded = encode_field_id_bytes(resource_uuid, field);
89
+ field_doc.add_bytes(encoded_field_id_bytes, encoded.as_slice());
87
90
  }
88
91
 
89
92
  for label in text_info.labels.iter() {
@@ -45,7 +45,8 @@ pub struct TextSchema {
45
45
  pub groups_public: Field,
46
46
  pub groups_with_access: Field,
47
47
 
48
- pub encoded_field_id: Option<Field>,
48
+ pub encoded_field_id: Field,
49
+ pub encoded_field_id_bytes: Option<Field>,
49
50
  }
50
51
 
51
52
  pub fn timestamp_to_datetime_utc(timestamp: &nidx_protos::prost_types::Timestamp) -> DateTime {
@@ -80,14 +81,22 @@ impl TextSchema {
80
81
  let groups_public = sb.add_u64_field("groups_public", num_options);
81
82
  let groups_with_access = sb.add_facet_field("groups_with_access", facet_options);
82
83
 
83
- let encoded_field_id = if version >= 3 {
84
- // v3: We index the encoded_field_id to allow optimal field-level deletions
85
- Some(sb.add_u64_field("encoded_field_id", FAST | INDEXED))
86
- } else if version == 2 {
87
- // v2: Field ID encoded as array of u64 for faster retrieval during prefilter
84
+ let encoded_field_id = if version >= 4 {
85
+ // v4: Field ID encoded as array of u64 for faster retrieval during prefilter
88
86
  // Using a bytes field is slow due to tantivy's implementation being slow with many unique values.
89
87
  // A better implementation is tracked in https://github.com/quickwit-oss/tantivy/issues/2090
90
- Some(sb.add_u64_field("encoded_field_id", FAST))
88
+ sb.add_u64_field("encoded_field_id", FAST)
89
+ } else {
90
+ // v3: Field ID encoded as array of u64 for faster retrieval during prefilter
91
+ // Using a bytes field is slow due to tantivy's implementation being slow with many unique values.
92
+ // A better implementation is tracked in https://github.com/quickwit-oss/tantivy/issues/2090
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)
95
+ };
96
+
97
+ let encoded_field_id_bytes = if version >= 4 {
98
+ // v4: Field ID encoded as array of u8 for faster deletions
99
+ Some(sb.add_bytes_field("encoded_field_id_bytes", INDEXED))
91
100
  } else {
92
101
  None
93
102
  };
@@ -106,6 +115,7 @@ impl TextSchema {
106
115
  groups_public,
107
116
  groups_with_access,
108
117
  encoded_field_id,
118
+ encoded_field_id_bytes,
109
119
  }
110
120
  }
111
121
  }
@@ -147,9 +157,28 @@ pub fn decode_field_id(data: &[u64]) -> (uuid::Uuid, String) {
147
157
  (rid, String::from_utf8(ubytes).unwrap())
148
158
  }
149
159
 
160
+ /// Encodes a resource and field id as a series of u8
161
+ /// This is stored in the indexed field `encoded_field_id_bytes`
162
+ pub fn encode_field_id_bytes(rid: uuid::Uuid, fid: &str) -> Vec<u8> {
163
+ let mut out = Vec::with_capacity(16 + fid.len());
164
+ out.extend_from_slice(rid.as_bytes());
165
+ out.extend_from_slice(fid.as_bytes());
166
+ out
167
+ }
168
+
150
169
  #[cfg(test)]
151
170
  mod tests {
152
- use super::{decode_field_id, encode_field_id};
171
+ use super::{decode_field_id, encode_field_id, encode_field_id_bytes};
172
+
173
+ /// Decodes a resource and field id from a series of u8
174
+ pub fn decode_field_id_bytes(data: &[u8]) -> (uuid::Uuid, String) {
175
+ if data.len() < 16 {
176
+ panic!("Data is too short to contain a valid UUID");
177
+ }
178
+ let rid = uuid::Uuid::from_slice(&data[..16]).unwrap();
179
+ let fid = String::from_utf8(data[16..].to_vec()).unwrap();
180
+ (rid, fid)
181
+ }
153
182
 
154
183
  #[test]
155
184
  fn test_encode_decode_field_id() {
@@ -172,4 +201,26 @@ mod tests {
172
201
  assert_eq!(decoded_fid, t.1);
173
202
  }
174
203
  }
204
+
205
+ #[test]
206
+ fn test_encode_decode_field_id_bytes() {
207
+ // Test with different lengths to ensure it works when crossing block length
208
+ let testcases = [
209
+ ("03ce0c2cdcc0060069fb8f69c73fa8e2", "a/title"),
210
+ ("03ce0c2cdcc0060069fb8f69c73fa8e2", "a/title1"),
211
+ ("03ce0c2cdcc0060069fb8f69c73fa8e2", "a/title12"),
212
+ ("03ce0c2cdcc0060069fb8f69c73fa8e2", "a/title123"),
213
+ ("03ce0c2cdcc0060069fb8f69c73fa8e2", "a/title1234"),
214
+ ("03ce0c2cdcc0060069fb8f69c73fa8e2", "a/title12345"),
215
+ ("03ce0c2cdcc0060069fb8f69c73fa8e2", "a/title123456"),
216
+ ("03ce0c2cdcc0060069fb8f69c73fa8e2", "a/title1234567"),
217
+ ];
218
+ for t in testcases {
219
+ let rid = uuid::Uuid::parse_str(t.0).unwrap();
220
+ let data = encode_field_id_bytes(rid, t.1);
221
+ let (decoded_rid, decoded_fid) = decode_field_id_bytes(&data);
222
+ assert_eq!(decoded_rid.simple().to_string().as_str(), t.0);
223
+ assert_eq!(decoded_fid, t.1);
224
+ }
225
+ }
175
226
  }
@@ -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.post215"
16
+ version = "6.3.5.post220"
17
17
 
18
18
  [project.urls]
19
19
  Homepage = "https://nuclia.com"
@@ -345,12 +345,12 @@ mod tests {
345
345
  async fn test_text_config(pool: sqlx::PgPool) -> anyhow::Result<()> {
346
346
  let meta = NidxMetadata::new_with_pool(pool).await.unwrap();
347
347
 
348
- // Default version for new indexes is 3
348
+ // Default version for new indexes is 4
349
349
  let shard = Shard::create(&meta.pool, Uuid::new_v4()).await.unwrap();
350
350
  let index = Index::create(&meta.pool, shard.id, "multilingual", IndexConfig::new_text())
351
351
  .await
352
352
  .unwrap();
353
- assert_eq!(index.config::<TextConfig>()?.version, 3);
353
+ assert_eq!(index.config::<TextConfig>()?.version, 4);
354
354
 
355
355
  // Default version if DB is empty is 1
356
356
  sqlx::query("UPDATE indexes SET configuration = NULL")