nidx-binding 6.3.4.post148__tar.gz → 6.3.4.post154__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 (245) hide show
  1. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/PKG-INFO +1 -1
  2. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/tests/reader.rs +0 -1
  3. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_protos/pyproject.toml +1 -1
  4. nidx_binding-6.3.4.post154/nidx_relation/src/graph_collector.rs +177 -0
  5. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_relation/src/graph_query_parser.rs +16 -58
  6. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_relation/src/io_maps.rs +7 -14
  7. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_relation/src/lib.rs +37 -37
  8. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_relation/src/reader.rs +59 -156
  9. nidx_binding-6.3.4.post154/nidx_relation/src/resource_indexer.rs +102 -0
  10. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_relation/src/schema.rs +24 -49
  11. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_relation/tests/common/mod.rs +0 -1
  12. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_relation/tests/test_reader.rs +34 -36
  13. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_tests/src/graph.rs +0 -1
  14. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_text/tests/common/mod.rs +0 -1
  15. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/pyproject.toml +1 -1
  16. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/tests/test_search_relations.rs +2 -2
  17. nidx_binding-6.3.4.post148/nidx_relation/src/graph_collector.rs +0 -373
  18. nidx_binding-6.3.4.post148/nidx_relation/src/resource_indexer.rs +0 -130
  19. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-0cfce9b29547f8f5bafa6e440f86103be7b8c4ad2fd92db9ac223f4efbe23d10.json +0 -0
  20. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-1a561eed00f3dbe868bf5030059793300209179dc8fb73e4b57a54b5e81262fe.json +0 -0
  21. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-1d3fca2682e25a01143da92285297f134a6a105a96f64d87e0db3abb219855e4.json +0 -0
  22. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-249b3b57c27a71baa823f1fe0f0bba9c9af36f61c28f731e58beea60ec48e687.json +0 -0
  23. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-24cb6b683daa42d7125f862e25943ab4be7bf275cd8739f8da4859d701795e1a.json +0 -0
  24. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-263c8fce6db5b03bbd012fafdba6943cbee6ed7eb8976cdef4f5b01dde7ca6fd.json +0 -0
  25. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-2a5d92fb1638df830a4477a7cdf24e6db6b43034b7bbe74fdfb63e8afe2c4071.json +0 -0
  26. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-2b065a363f58caed60e3706603c1260dbf5a4c795604a5b68edda22eb07fec1b.json +0 -0
  27. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-3fc3cb39934683de8cd475ce1368c8373453eb1e01f81587d66b9d14b109ce6e.json +0 -0
  28. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-48f33b77b7c1633467b0b2efcaa1d3c207e7757e4f1d83b40d15e6ca365f7771.json +0 -0
  29. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-4ae09f2c08e2f324bee01bb8487a8f37678a1c5e9d327339235c50d4921a8949.json +0 -0
  30. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-4d7a76fa413c9ef0ce2a47ac7bb7e01d3e6a2aabded9487d21010a53efee8852.json +0 -0
  31. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-4fcbdd6657c7dc9b60b3a563dd41711b3dbcf72ce063427b7a01f8cddf34c244.json +0 -0
  32. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-577109ac00ccfbd38ecaccab94116f2f46a4caf5612afa372cded197123c1e08.json +0 -0
  33. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-5db25f97d8578d6d78f2f6bd4b72cc82a9b1b82805c6422d967ac63b20d99db4.json +0 -0
  34. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-5ec3233a3a23e926055056d46bdde17836a633066dbb5f349502648cd3ea9a60.json +0 -0
  35. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-66edb6ea424d8681927dcddb6bac5f1239175f4775d1f40417ba15054b0c6f19.json +0 -0
  36. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-6f9c6d201c1b5712efb68c363bffd3e0169c11f2a8f925e8cd4e8808599ff7b4.json +0 -0
  37. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-733c3ebacc86f444bf5e2dd79ade660c291e88a00fc09b722f6e2e191545874c.json +0 -0
  38. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-77a245aed9f6f8b9fc643efbd4b1e2e8e99bbba085e3e75a4f29321cd7b2a25c.json +0 -0
  39. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-7a3bf27c330c468a596e8a297cf7d8b192e31e67ecc5177c1267f579e8e247c7.json +0 -0
  40. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-7a7e59e47b30b12237511fd3d7da2d17b0471ad2b006af48d6a6f587c779692b.json +0 -0
  41. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-7dcbb33312cc9f11ae3a6d73b1ace017a9f19a8bf8f10304fc57977c8efeadff.json +0 -0
  42. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-7efa7c0d747afc4b6aed0586ff846c27839c3213ff7ee9f30c89b0d0f17e60e3.json +0 -0
  43. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-8493140d788604d498a4e48da4158708572ccc9d60185290a00d549cc84533db.json +0 -0
  44. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-8493bb0059b013eaca42fd10cd7d04f0d06a8acaed379eff0d23f3229edde9ee.json +0 -0
  45. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-87996b3d6c7a2195438d7038015b06949102bce8c7b8cd8db1f83aaf23cbe489.json +0 -0
  46. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-8f096d8171b89f9615d18f95d696dc9e4fb3674e103161a713cdc806f7a68506.json +0 -0
  47. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-917732a56ee04bf3a6e127319dda8225210869c82f9828d878162394dba4e078.json +0 -0
  48. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-95fe4ef93ee90733db1b67ed7987f80b5aac792f1590b979c68b418d1599eb98.json +0 -0
  49. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-9b67658569b343d8b4b61ae0a7dc721f367f2ba33c7b69b9e68bfd5c9bff5206.json +0 -0
  50. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-9c8062ea55d070afef68309e58fa987eb37fda44e1efbf68c8ba2af7846cc968.json +0 -0
  51. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-a06e1d9f6f95e4c4c2b98310ebddcc9d963cc033582bf2e945e8bf3a301b4247.json +0 -0
  52. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-a55265c9b07bd1399961a6f1e757201fd0eebe868ddaf96437111113d80fce92.json +0 -0
  53. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-a891a37be5c2d7cce775c2dd33726b0318fd3839beab222a1b22bc6174604207.json +0 -0
  54. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-a945191bb4b3e37d6823ed3ad499339d007d69983105de8567777d9daf517b28.json +0 -0
  55. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-abe9f7832f2bd799ac44008da031e8d8ab52d4f5fbfc2a7e3974e8873bae55b2.json +0 -0
  56. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-aca588cca57a85e4d7fcc40c23cd87e57d53d11ca550d78e7e3d5e39e524fcd3.json +0 -0
  57. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-b02f8aafc00a7724510772ac41269e368c5bccf03ef7b4590e0ef6fd1a1bf64f.json +0 -0
  58. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-b742e17cabe2d64617e9aa64bafc782172f7a4f8023d1b54f952a0fb39f6b2b8.json +0 -0
  59. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-b94e349dbc0daec57f8f8f6e9e2dffb06100b1bb2b41d297c9f3b191da37a83d.json +0 -0
  60. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-bd9afa22994aba671dbf7b5f89b53c2ee02f53c0442a81265786a6d52d08512f.json +0 -0
  61. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-be60554eca98a5899efc6b49785cecd6444a6d39afed9e4a884ce2dbf162012c.json +0 -0
  62. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-bf49702b506c9a1650ece1f8e8d9f14834a902f8caefafe30ded55e2790f2188.json +0 -0
  63. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-bfb8ae2e860e451b0868a7b1b50a451d998b2105f9fdfd307b26a1775d145e9f.json +0 -0
  64. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-bfcd21ed704cd305db5c17fcdec7d92aa4ac501913c9c9514d8ff92928c0c7e7.json +0 -0
  65. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-c3ab694650f49a75b146fb877a92e48c4f20f0d99f70f8ec859fbb763b01a1e5.json +0 -0
  66. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-c55542bb9fae544d87fae6f30e0fe8a9088d12075f4442ab4fe2fcd05e472234.json +0 -0
  67. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-cb29a6556d35ac630ee0aa885dd7341cf9573bd3efd216ff8a887b87686b03db.json +0 -0
  68. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-d0a1f341a89f5f14696b10baa72db9d95551c2b7e5fc67308fd52dc03dd98a92.json +0 -0
  69. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-d2ad0a0ca2649c9e4873cfcc1fc66d2d07cc45d0f65c560b06d7b5f592f4fa8a.json +0 -0
  70. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-d6cfe78eb635ba0b89ca4021a4dc8182d18ab5b197f30149cd28488eba4c1df5.json +0 -0
  71. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-d729b56dea00e49dcdba8cf0001e2811da27351eabe98212db3b589f18fc6f32.json +0 -0
  72. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-d9658bfd4e7170b41d03f2ddf2446d0bf54171c0d39d53bf20af2b8437f2ec48.json +0 -0
  73. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-dbba7b3d3289425bae711aedbf73fbc3699f857f86f84d95c3b556d05c5658b0.json +0 -0
  74. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-dcb96b649d6d63a58efd5d445453a4f3d7869a56ff714b69bedf3d616a0473ca.json +0 -0
  75. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-ebd876fbf5362a5900e75bc05f2f11c73c406ef7da4e95097fc6a1c3d1b8bc54.json +0 -0
  76. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-eef5cc6bce1cc14eba8f3e68971724ef181e88cffcedd74673615f2026b89a62.json +0 -0
  77. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/.sqlx/query-ef56d5fefc5774040d1ee397beadb475f6af02768c22f0e583c74062e2e821ce.json +0 -0
  78. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/Cargo.lock +0 -0
  79. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/Cargo.toml +0 -0
  80. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/README.md +0 -0
  81. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/migrations/20241007163501_initial.sql +0 -0
  82. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/migrations/20241211120039_merge_job_priority.sql +0 -0
  83. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/migrations/20241211121159_basic_indexes.sql +0 -0
  84. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/migrations/20241212151105_check_segment_records.sql +0 -0
  85. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/migrations/20250110145554_in_flight_messages.sql +0 -0
  86. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_binding/Cargo.toml +0 -0
  87. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_binding/src/lib.rs +0 -0
  88. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/Cargo.toml +0 -0
  89. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/src/fuzzy_query.rs +0 -0
  90. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/src/lib.rs +0 -0
  91. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/src/query_io.rs +0 -0
  92. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/src/reader.rs +0 -0
  93. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/src/request_types.rs +0 -0
  94. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/src/resource_indexer.rs +0 -0
  95. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/src/schema.rs +0 -0
  96. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/src/search_query.rs +0 -0
  97. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/src/search_response.rs +0 -0
  98. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/src/set_query.rs +0 -0
  99. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/src/stop_words.rs +0 -0
  100. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/README.md +0 -0
  101. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/ar.json +0 -0
  102. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/az.json +0 -0
  103. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/bn.json +0 -0
  104. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/ca.json +0 -0
  105. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/ch.json +0 -0
  106. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/da.json +0 -0
  107. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/de.json +0 -0
  108. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/el.json +0 -0
  109. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/en.json +0 -0
  110. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/es.json +0 -0
  111. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/eu.json +0 -0
  112. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/extract.py +0 -0
  113. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/fi.json +0 -0
  114. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/fr.json +0 -0
  115. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/he.json +0 -0
  116. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/hu.json +0 -0
  117. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/id.json +0 -0
  118. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/it.json +0 -0
  119. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/kk.json +0 -0
  120. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/ne.json +0 -0
  121. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/nl.json +0 -0
  122. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/no.json +0 -0
  123. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/pt.json +0 -0
  124. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/ro.json +0 -0
  125. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/ru.json +0 -0
  126. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/sl.json +0 -0
  127. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/sv.json +0 -0
  128. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/tg.json +0 -0
  129. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/stop_words/tr.json +0 -0
  130. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_paragraph/tests/common/mod.rs +0 -0
  131. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_protos/Cargo.toml +0 -0
  132. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_protos/build.py +0 -0
  133. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_protos/build.rs +0 -0
  134. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_protos/src/lib.rs +0 -0
  135. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_protos/src/nidx.proto +0 -0
  136. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_relation/Cargo.toml +0 -0
  137. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_relation/tests/test_graph_query_parser_search.rs +0 -0
  138. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_relation/tests/test_graph_search.rs +0 -0
  139. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_relation/tests/test_writer.rs +0 -0
  140. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_tantivy/Cargo.toml +0 -0
  141. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_tantivy/src/index_reader.rs +0 -0
  142. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_tantivy/src/lib.rs +0 -0
  143. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_tests/Cargo.toml +0 -0
  144. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_tests/src/lib.rs +0 -0
  145. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_text/Cargo.toml +0 -0
  146. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_text/src/lib.rs +0 -0
  147. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_text/src/prefilter.rs +0 -0
  148. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_text/src/query_io.rs +0 -0
  149. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_text/src/reader.rs +0 -0
  150. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_text/src/request_types.rs +0 -0
  151. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_text/src/resource_indexer.rs +0 -0
  152. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_text/src/schema.rs +0 -0
  153. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_text/src/search_query.rs +0 -0
  154. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_text/tests/test_flow.rs +0 -0
  155. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_text/tests/test_search.rs +0 -0
  156. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_text/tests/test_streaming.rs +0 -0
  157. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_types/Cargo.toml +0 -0
  158. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_types/src/lib.rs +0 -0
  159. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_types/src/prefilter.rs +0 -0
  160. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_types/src/query_language.rs +0 -0
  161. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/Cargo.toml +0 -0
  162. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/config.rs +0 -0
  163. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/data_point/disk_hnsw.rs +0 -0
  164. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/data_point/mod.rs +0 -0
  165. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/data_point/node.rs +0 -0
  166. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/data_point/ops_hnsw.rs +0 -0
  167. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/data_point/params.rs +0 -0
  168. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/data_point/ram_hnsw.rs +0 -0
  169. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/data_point/tests.rs +0 -0
  170. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/data_point_provider/mod.rs +0 -0
  171. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/data_point_provider/reader.rs +0 -0
  172. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/data_types/data_store.rs +0 -0
  173. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/data_types/mod.rs +0 -0
  174. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/data_types/trie.rs +0 -0
  175. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/data_types/trie_ram.rs +0 -0
  176. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/formula/mod.rs +0 -0
  177. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/indexer.rs +0 -0
  178. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/inverted_index/fst_index.rs +0 -0
  179. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/inverted_index/map.rs +0 -0
  180. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/inverted_index.rs +0 -0
  181. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/lib.rs +0 -0
  182. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/query_io.rs +0 -0
  183. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/request_types.rs +0 -0
  184. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/utils.rs +0 -0
  185. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/vector_types/dense_f32.rs +0 -0
  186. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/src/vector_types/mod.rs +0 -0
  187. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/tests/common/mod.rs +0 -0
  188. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/tests/test_basic_search.rs +0 -0
  189. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/nidx_vector/tests/test_hidden.rs +0 -0
  190. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/api/grpc.rs +0 -0
  191. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/api/shards.rs +0 -0
  192. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/api.rs +0 -0
  193. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/control.rs +0 -0
  194. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/errors.rs +0 -0
  195. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/grpc_server.rs +0 -0
  196. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/import_export.rs +0 -0
  197. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/indexer.rs +0 -0
  198. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/lib.rs +0 -0
  199. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/main.rs +0 -0
  200. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/metadata/deletion.rs +0 -0
  201. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/metadata/index.rs +0 -0
  202. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/metadata/index_request.rs +0 -0
  203. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/metadata/merge_job.rs +0 -0
  204. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/metadata/segment.rs +0 -0
  205. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/metadata/shard.rs +0 -0
  206. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/metadata.rs +0 -0
  207. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/metrics.rs +0 -0
  208. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/scheduler/audit_task.rs +0 -0
  209. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/scheduler/log_merge.rs +0 -0
  210. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/scheduler/merge_task.rs +0 -0
  211. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/scheduler/metrics_task.rs +0 -0
  212. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/scheduler/purge_tasks.rs +0 -0
  213. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/scheduler/vector_merge.rs +0 -0
  214. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/scheduler.rs +0 -0
  215. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/searcher/grpc.rs +0 -0
  216. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/searcher/index_cache.rs +0 -0
  217. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/searcher/query_language.rs +0 -0
  218. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/searcher/query_planner.rs +0 -0
  219. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/searcher/shard_search.rs +0 -0
  220. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/searcher/shard_selector.rs +0 -0
  221. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/searcher/shard_suggest.rs +0 -0
  222. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/searcher/streams.rs +0 -0
  223. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/searcher/sync.rs +0 -0
  224. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/searcher.rs +0 -0
  225. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/segment_store.rs +0 -0
  226. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/settings.rs +0 -0
  227. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/telemetry/duration_layer.rs +0 -0
  228. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/telemetry/log_format.rs +0 -0
  229. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/telemetry/middleware.rs +0 -0
  230. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/telemetry.rs +0 -0
  231. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/tool.rs +0 -0
  232. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/src/worker.rs +0 -0
  233. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/tests/common/mod.rs +0 -0
  234. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/tests/common/services.rs +0 -0
  235. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/tests/test_date_range_search.rs +0 -0
  236. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/tests/test_search_filtering.rs +0 -0
  237. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/tests/test_search_sorting.rs +0 -0
  238. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/tests/test_searcher_cluster.rs +0 -0
  239. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/tests/test_security_search.rs +0 -0
  240. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/tests/test_shards.rs +0 -0
  241. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/tests/test_shards_api.rs +0 -0
  242. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/tests/test_suggest.rs +0 -0
  243. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/tests/test_synced_searcher.rs +0 -0
  244. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/tests/test_vector_normalization.rs +0 -0
  245. {nidx_binding-6.3.4.post148 → nidx_binding-6.3.4.post154}/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.post148
3
+ Version: 6.3.4.post154
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -156,7 +156,6 @@ fn create_resource(shard_id: String, timestamp: Timestamp) -> Resource {
156
156
  labels: vec!["/l/mylabel_resource".to_string()],
157
157
  paragraphs,
158
158
  paragraphs_to_delete: vec![],
159
- relations: vec![],
160
159
  vectors: HashMap::default(),
161
160
  vectors_to_delete: HashMap::default(),
162
161
  shard_id,
@@ -4,7 +4,7 @@ build-backend = "pdm.backend"
4
4
 
5
5
  [project]
6
6
  name = "nidx_protos"
7
- version = "6.3.4.post148"
7
+ version = "6.3.4.post154"
8
8
  license = { text = "AGPL" }
9
9
  description = "Protobuf definitions for nucliadb/nidx"
10
10
  authors = [ { name = "Nuclia", email = "nucliadb@nuclia.com" }]
@@ -0,0 +1,177 @@
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::collections::HashSet;
22
+
23
+ use tantivy::{
24
+ DocId, Score, SegmentOrdinal, SegmentReader,
25
+ collector::{Collector, SegmentCollector},
26
+ columnar::Column,
27
+ };
28
+
29
+ #[derive(Clone, Copy)]
30
+ pub enum NodeSelector {
31
+ SourceNodes,
32
+ DestinationNodes,
33
+ }
34
+
35
+ // Node collector for schema v2
36
+ //
37
+ // We can now use fast fields to uniquely identify nodes.
38
+
39
+ pub struct TopUniqueNodeCollector2 {
40
+ limit: usize,
41
+ selector: NodeSelector,
42
+ }
43
+
44
+ pub struct TopUniqueNodeSegmentCollector2 {
45
+ limit: usize,
46
+ unique: HashSet<Vec<u64>>,
47
+ encoded_node_reader: Column<u64>,
48
+ }
49
+
50
+ // Relations collector for schema v2
51
+ pub struct TopUniqueRelationCollector2 {
52
+ limit: usize,
53
+ }
54
+
55
+ pub struct TopUniqueRelationSegmentCollector2 {
56
+ limit: usize,
57
+ unique: HashSet<Vec<u64>>,
58
+ encoded_relation_reader: Column<u64>,
59
+ }
60
+
61
+ impl TopUniqueNodeCollector2 {
62
+ pub fn new(selector: NodeSelector, limit: usize) -> Self {
63
+ Self { limit, selector }
64
+ }
65
+ }
66
+
67
+ impl Collector for TopUniqueNodeCollector2 {
68
+ type Fruit = HashSet<Vec<u64>>;
69
+ type Child = TopUniqueNodeSegmentCollector2;
70
+
71
+ fn requires_scoring(&self) -> bool {
72
+ false
73
+ }
74
+
75
+ fn for_segment(&self, _segment_local_id: SegmentOrdinal, segment: &SegmentReader) -> tantivy::Result<Self::Child> {
76
+ let fast_field_reader = match self.selector {
77
+ NodeSelector::SourceNodes => segment.fast_fields().u64("encoded_source_id")?,
78
+ NodeSelector::DestinationNodes => segment.fast_fields().u64("encoded_target_id")?,
79
+ };
80
+ Ok(TopUniqueNodeSegmentCollector2 {
81
+ limit: self.limit,
82
+ unique: HashSet::new(),
83
+ encoded_node_reader: fast_field_reader,
84
+ })
85
+ }
86
+
87
+ fn merge_fruits(
88
+ &self,
89
+ segment_fruits: Vec<<Self::Child as SegmentCollector>::Fruit>,
90
+ ) -> tantivy::Result<Self::Fruit> {
91
+ let mut unique = HashSet::new();
92
+ let mut fruits = segment_fruits.into_iter().flatten();
93
+ let mut fruit = fruits.next();
94
+
95
+ while fruit.is_some() && unique.len() < self.limit {
96
+ unique.insert(fruit.unwrap());
97
+ fruit = fruits.next();
98
+ }
99
+ Ok(unique)
100
+ }
101
+ }
102
+
103
+ impl SegmentCollector for TopUniqueNodeSegmentCollector2 {
104
+ type Fruit = HashSet<Vec<u64>>;
105
+
106
+ fn collect(&mut self, doc_id: DocId, _score: Score) {
107
+ // we already have all unique results we need
108
+ if self.unique.len() >= self.limit {
109
+ return;
110
+ }
111
+ let encoded_node = self.encoded_node_reader.values_for_doc(doc_id).collect::<Vec<u64>>();
112
+ self.unique.insert(encoded_node);
113
+ }
114
+
115
+ fn harvest(self) -> Self::Fruit {
116
+ self.unique
117
+ }
118
+ }
119
+
120
+ impl TopUniqueRelationCollector2 {
121
+ pub fn new(limit: usize) -> Self {
122
+ Self { limit }
123
+ }
124
+ }
125
+
126
+ impl Collector for TopUniqueRelationCollector2 {
127
+ type Fruit = HashSet<Vec<u64>>;
128
+ type Child = TopUniqueRelationSegmentCollector2;
129
+
130
+ fn requires_scoring(&self) -> bool {
131
+ false
132
+ }
133
+
134
+ fn for_segment(&self, _segment_local_id: SegmentOrdinal, segment: &SegmentReader) -> tantivy::Result<Self::Child> {
135
+ Ok(TopUniqueRelationSegmentCollector2 {
136
+ limit: self.limit,
137
+ unique: HashSet::new(),
138
+ encoded_relation_reader: segment.fast_fields().u64("encoded_relation_id")?,
139
+ })
140
+ }
141
+
142
+ fn merge_fruits(
143
+ &self,
144
+ segment_fruits: Vec<<Self::Child as SegmentCollector>::Fruit>,
145
+ ) -> tantivy::Result<Self::Fruit> {
146
+ let mut unique = HashSet::new();
147
+ let mut fruits = segment_fruits.into_iter().flat_map(|map| map.into_iter());
148
+ let mut fruit = fruits.next();
149
+
150
+ while fruit.is_some() && unique.len() < self.limit {
151
+ unique.insert(fruit.unwrap());
152
+ fruit = fruits.next();
153
+ }
154
+ Ok(unique)
155
+ }
156
+ }
157
+
158
+ impl SegmentCollector for TopUniqueRelationSegmentCollector2 {
159
+ type Fruit = HashSet<Vec<u64>>;
160
+
161
+ fn collect(&mut self, doc_id: DocId, _score: Score) {
162
+ // we already have all unique results we need
163
+ if self.unique.len() >= self.limit {
164
+ return;
165
+ }
166
+
167
+ let relation = self
168
+ .encoded_relation_reader
169
+ .values_for_doc(doc_id)
170
+ .collect::<Vec<u64>>();
171
+ self.unique.insert(relation);
172
+ }
173
+
174
+ fn harvest(self) -> Self::Fruit {
175
+ self.unique
176
+ }
177
+ }
@@ -120,21 +120,10 @@ enum NodePosition {
120
120
  pub struct BoolNodeQuery(BooleanExpression<Node>);
121
121
  pub struct BoolGraphQuery(BooleanExpression<GraphQuery>);
122
122
 
123
- #[derive(Clone, Copy)]
124
- struct TokenizedNodeFields {
125
- exact: Field,
126
- tokenized: Field,
127
- }
128
-
129
- #[derive(Clone, Copy)]
130
- enum NodeValueField {
131
- Normalized(Field),
132
- Tokenized(TokenizedNodeFields),
133
- }
134
-
135
123
  #[derive(Clone, Copy)]
136
124
  struct NodeSchemaFields {
137
- value: NodeValueField,
125
+ exact_value: Field,
126
+ tokenized_value: Field,
138
127
  node_type: Field,
139
128
  node_subtype: Field,
140
129
  }
@@ -286,18 +275,11 @@ impl<'a> GraphQueryParser<'a> {
286
275
 
287
276
  #[inline]
288
277
  fn has_node_expression_as_source(&self, expression: &Expression<Node>) -> Vec<(Occur, Box<dyn Query>)> {
289
- let value = if self.schema.version == 1 {
290
- NodeValueField::Normalized(self.schema.normalized_source_value)
291
- } else {
292
- NodeValueField::Tokenized(TokenizedNodeFields {
293
- exact: self.schema.normalized_source_value,
294
- tokenized: self.schema.source_value,
295
- })
296
- };
297
278
  self.has_node_expression(
298
279
  expression,
299
280
  NodeSchemaFields {
300
- value,
281
+ exact_value: self.schema.normalized_source_value,
282
+ tokenized_value: self.schema.source_value,
301
283
  node_type: self.schema.source_type,
302
284
  node_subtype: self.schema.source_subtype,
303
285
  },
@@ -306,18 +288,11 @@ impl<'a> GraphQueryParser<'a> {
306
288
 
307
289
  #[inline]
308
290
  fn has_node_expression_as_destination(&self, expression: &Expression<Node>) -> Vec<(Occur, Box<dyn Query>)> {
309
- let value = if self.schema.version == 1 {
310
- NodeValueField::Normalized(self.schema.normalized_target_value)
311
- } else {
312
- NodeValueField::Tokenized(TokenizedNodeFields {
313
- exact: self.schema.normalized_target_value,
314
- tokenized: self.schema.target_value,
315
- })
316
- };
317
291
  self.has_node_expression(
318
292
  expression,
319
293
  NodeSchemaFields {
320
- value,
294
+ exact_value: self.schema.normalized_target_value,
295
+ tokenized_value: self.schema.target_value,
321
296
  node_type: self.schema.target_type,
322
297
  node_subtype: self.schema.target_subtype,
323
298
  },
@@ -403,7 +378,7 @@ impl<'a> GraphQueryParser<'a> {
403
378
  let value_query = node
404
379
  .value
405
380
  .as_ref()
406
- .and_then(|value| self.has_node_value(value, fields.value));
381
+ .and_then(|value| self.has_node_value(value, fields.exact_value, fields.tokenized_value));
407
382
  if let Some(query) = value_query {
408
383
  subqueries.push(query);
409
384
  }
@@ -468,7 +443,7 @@ impl<'a> GraphQueryParser<'a> {
468
443
  subqueries
469
444
  }
470
445
 
471
- fn has_node_value(&self, value: &Term, field: NodeValueField) -> Option<Box<dyn Query>> {
446
+ fn has_node_value(&self, value: &Term, exact_field: Field, tokenized_field: Field) -> Option<Box<dyn Query>> {
472
447
  let text_value = match value {
473
448
  Term::Exact(value) => value,
474
449
  Term::Fuzzy(fuzzy) => &fuzzy.value,
@@ -476,31 +451,14 @@ impl<'a> GraphQueryParser<'a> {
476
451
  if text_value.is_empty() {
477
452
  return None;
478
453
  }
479
- let exact_term = match field {
480
- NodeValueField::Normalized(field) => {
481
- tantivy::Term::from_field_text(field, &self.schema.normalize(text_value))
482
- }
483
- NodeValueField::Tokenized(TokenizedNodeFields { exact, .. }) => {
484
- tantivy::Term::from_field_text(exact, &self.schema.normalize(text_value))
485
- }
486
- };
487
- let tokenized_terms = match field {
488
- NodeValueField::Normalized(field) => {
489
- vec![tantivy::Term::from_field_text(
490
- field,
491
- &self.schema.normalize(text_value),
492
- )]
493
- }
494
- NodeValueField::Tokenized(TokenizedNodeFields { tokenized, .. }) => {
495
- let mut tokenizer = TokenizerManager::default().get("default").unwrap();
496
- let mut token_stream = tokenizer.token_stream(text_value);
497
- let mut terms = Vec::new();
498
- while let Some(token) = token_stream.next() {
499
- terms.push(tantivy::Term::from_field_text(tokenized, &token.text));
500
- }
501
- terms
502
- }
503
- };
454
+ let exact_term = tantivy::Term::from_field_text(exact_field, &self.schema.normalize(text_value));
455
+
456
+ let mut tokenizer = TokenizerManager::default().get("default").unwrap();
457
+ let mut token_stream = tokenizer.token_stream(text_value);
458
+ let mut tokenized_terms = Vec::new();
459
+ while let Some(token) = token_stream.next() {
460
+ tokenized_terms.push(tantivy::Term::from_field_text(tokenized_field, &token.text));
461
+ }
504
462
 
505
463
  // TODO: Rethink this
506
464
  // Current logic:
@@ -105,25 +105,18 @@ pub fn doc_to_relation(schema: &Schema, doc: &TantivyDocument) -> ProtosRelation
105
105
  relation_label: schema.relationship_label(doc).to_string(),
106
106
  source: Some(source_to_relation_node(schema, doc)),
107
107
  to: Some(target_to_relation_node(schema, doc)),
108
- resource_id: Some(schema.resource_id(doc)),
109
108
  }
110
109
  }
111
110
 
112
111
  pub fn doc_to_index_relation(schema: &Schema, doc: &TantivyDocument) -> IndexRelation {
113
- let resource_field_id = schema.resource_field_id.and_then(|f| {
114
- doc.get_first(f).map(|v| {
115
- let (rid, fid) = decode_field_id(v.as_bytes().unwrap());
116
- format!("{}/{}", rid.simple(), fid)
117
- })
112
+ let resource_field_id = doc.get_first(schema.resource_field_id).map(|v| {
113
+ let (rid, fid) = decode_field_id(v.as_bytes().unwrap());
114
+ format!("{}/{}", rid.simple(), fid)
118
115
  });
119
- let facets = schema
120
- .facets
121
- .map(|field| {
122
- doc.get_all(field)
123
- .map(|f| f.as_facet().unwrap().to_path_string())
124
- .collect()
125
- })
126
- .unwrap_or_default();
116
+ let facets = doc
117
+ .get_all(schema.facets)
118
+ .map(|f| f.as_facet().unwrap().to_path_string())
119
+ .collect();
127
120
  IndexRelation {
128
121
  relation: Some(doc_to_relation(schema, doc)),
129
122
  resource_field_id,
@@ -25,6 +25,7 @@ mod reader;
25
25
  mod resource_indexer;
26
26
  mod schema;
27
27
 
28
+ use anyhow::anyhow;
28
29
  use nidx_protos::{
29
30
  GraphSearchRequest, GraphSearchResponse, RelationNode, RelationNodeFilter, RelationPrefixSearchRequest,
30
31
  RelationSearchRequest, RelationSearchResponse, relation_node::NodeType, relation_prefix_search_request::Search,
@@ -82,35 +83,29 @@ pub struct RelationIndexer;
82
83
 
83
84
  pub struct RelationDeletionQueryBuilder {
84
85
  resource: Field,
85
- field: Option<Field>,
86
+ field: Field,
86
87
  }
87
88
  impl DeletionQueryBuilder for RelationDeletionQueryBuilder {
88
89
  fn query<'a>(&self, keys: impl Iterator<Item = &'a String>) -> Box<dyn Query> {
89
- if let Some(field) = self.field {
90
- Box::new(TermSetQuery::new(keys.filter_map(|k| {
91
- // Our keys can be resource or field ids, match the corresponding tantivy field
92
- if k.len() < 32 {
93
- error!(?k, "Invalid deletion key for nidx_relation");
94
- return None;
95
- }
96
-
97
- let Ok(rid) = Uuid::parse_str(&k[..32]) else {
98
- error!(?k, "Invalid deletion key for nidx_relation");
99
- return None;
100
- };
101
-
102
- let is_field = k.len() > 32;
103
- if is_field {
104
- Some(Term::from_field_bytes(field, &encode_field_id(rid, &k[33..])))
105
- } else {
106
- Some(Term::from_field_bytes(self.resource, rid.as_bytes()))
107
- }
108
- })))
109
- } else {
110
- Box::new(TermSetQuery::new(
111
- keys.map(|k| Term::from_field_bytes(self.resource, k.as_bytes())),
112
- ))
113
- }
90
+ Box::new(TermSetQuery::new(keys.filter_map(|k| {
91
+ // Our keys can be resource or field ids, match the corresponding tantivy field
92
+ if k.len() < 32 {
93
+ error!(?k, "Invalid deletion key for nidx_relation");
94
+ return None;
95
+ }
96
+
97
+ let Ok(rid) = Uuid::parse_str(&k[..32]) else {
98
+ error!(?k, "Invalid deletion key for nidx_relation");
99
+ return None;
100
+ };
101
+
102
+ let is_field = k.len() > 32;
103
+ if is_field {
104
+ Some(Term::from_field_bytes(self.field, &encode_field_id(rid, &k[33..])))
105
+ } else {
106
+ Some(Term::from_field_bytes(self.resource, rid.as_bytes()))
107
+ }
108
+ })))
114
109
  }
115
110
  }
116
111
  impl RelationDeletionQueryBuilder {
@@ -130,6 +125,9 @@ impl RelationIndexer {
130
125
  config: &RelationConfig,
131
126
  resource: &nidx_protos::Resource,
132
127
  ) -> anyhow::Result<Option<TantivySegmentMetadata>> {
128
+ if config.version != 2 {
129
+ return Err(anyhow!("Unsupported nidx_relation version"));
130
+ }
133
131
  let field_schema = RelationSchema::new(config.version);
134
132
  let mut indexer = TantivyIndexer::new(output_dir.to_path_buf(), field_schema.schema.clone())?;
135
133
 
@@ -141,17 +139,13 @@ impl RelationIndexer {
141
139
  indexer.finalize()
142
140
  }
143
141
 
144
- pub fn deletions_for_resource(&self, config: &RelationConfig, resource: &nidx_protos::Resource) -> Vec<String> {
145
- if config.version == 2 {
146
- let rid = &resource.resource.as_ref().unwrap().uuid;
147
- resource
148
- .relation_fields_to_delete
149
- .iter()
150
- .map(|f| format!("{rid}/{f}"))
151
- .collect()
152
- } else {
153
- vec![resource.resource.as_ref().unwrap().uuid.clone()]
154
- }
142
+ pub fn deletions_for_resource(&self, _config: &RelationConfig, resource: &nidx_protos::Resource) -> Vec<String> {
143
+ let rid = &resource.resource.as_ref().unwrap().uuid;
144
+ resource
145
+ .relation_fields_to_delete
146
+ .iter()
147
+ .map(|f| format!("{rid}/{f}"))
148
+ .collect()
155
149
  }
156
150
 
157
151
  #[instrument(name = "relation::merge", skip_all)]
@@ -161,6 +155,9 @@ impl RelationIndexer {
161
155
  config: RelationConfig,
162
156
  open_index: impl OpenIndexMetadata<TantivyMeta>,
163
157
  ) -> anyhow::Result<TantivySegmentMetadata> {
158
+ if config.version != 2 {
159
+ return Err(anyhow!("Unsupported nidx_relation version"));
160
+ }
164
161
  let schema = RelationSchema::new(config.version);
165
162
  let deletions_query = RelationDeletionQueryBuilder::new(&schema);
166
163
  let index = open_index_with_deletions(schema.schema, open_index, deletions_query)?;
@@ -185,6 +182,9 @@ pub struct RelationSearcher {
185
182
  impl RelationSearcher {
186
183
  #[instrument(name = "relation::open", skip_all)]
187
184
  pub fn open(config: RelationConfig, open_index: impl OpenIndexMetadata<TantivyMeta>) -> anyhow::Result<Self> {
185
+ if config.version != 2 {
186
+ return Err(anyhow!("Unsupported nidx_relation version"));
187
+ }
188
188
  let schema = RelationSchema::new(config.version);
189
189
  let deletions_query = RelationDeletionQueryBuilder::new(&schema);
190
190
  let index = open_index_with_deletions(schema.schema, open_index, deletions_query)?;