nidx-binding 6.3.4.post161__tar.gz → 6.3.4.post167__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/PKG-INFO +1 -1
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_protos/pyproject.toml +1 -1
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/src/graph_query_parser.rs +85 -43
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/src/reader.rs +2 -2
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/tests/test_graph_search.rs +264 -20
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/pyproject.toml +1 -1
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/tests/test_search_relations.rs +6 -3
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-0cfce9b29547f8f5bafa6e440f86103be7b8c4ad2fd92db9ac223f4efbe23d10.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-1a561eed00f3dbe868bf5030059793300209179dc8fb73e4b57a54b5e81262fe.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-1d3fca2682e25a01143da92285297f134a6a105a96f64d87e0db3abb219855e4.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-249b3b57c27a71baa823f1fe0f0bba9c9af36f61c28f731e58beea60ec48e687.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-24cb6b683daa42d7125f862e25943ab4be7bf275cd8739f8da4859d701795e1a.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-263c8fce6db5b03bbd012fafdba6943cbee6ed7eb8976cdef4f5b01dde7ca6fd.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-2a5d92fb1638df830a4477a7cdf24e6db6b43034b7bbe74fdfb63e8afe2c4071.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-2b065a363f58caed60e3706603c1260dbf5a4c795604a5b68edda22eb07fec1b.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-3fc3cb39934683de8cd475ce1368c8373453eb1e01f81587d66b9d14b109ce6e.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-48f33b77b7c1633467b0b2efcaa1d3c207e7757e4f1d83b40d15e6ca365f7771.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-4ae09f2c08e2f324bee01bb8487a8f37678a1c5e9d327339235c50d4921a8949.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-4d7a76fa413c9ef0ce2a47ac7bb7e01d3e6a2aabded9487d21010a53efee8852.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-4fcbdd6657c7dc9b60b3a563dd41711b3dbcf72ce063427b7a01f8cddf34c244.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-577109ac00ccfbd38ecaccab94116f2f46a4caf5612afa372cded197123c1e08.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-5db25f97d8578d6d78f2f6bd4b72cc82a9b1b82805c6422d967ac63b20d99db4.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-5ec3233a3a23e926055056d46bdde17836a633066dbb5f349502648cd3ea9a60.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-66edb6ea424d8681927dcddb6bac5f1239175f4775d1f40417ba15054b0c6f19.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-6f9c6d201c1b5712efb68c363bffd3e0169c11f2a8f925e8cd4e8808599ff7b4.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-733c3ebacc86f444bf5e2dd79ade660c291e88a00fc09b722f6e2e191545874c.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-77a245aed9f6f8b9fc643efbd4b1e2e8e99bbba085e3e75a4f29321cd7b2a25c.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-7a3bf27c330c468a596e8a297cf7d8b192e31e67ecc5177c1267f579e8e247c7.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-7a7e59e47b30b12237511fd3d7da2d17b0471ad2b006af48d6a6f587c779692b.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-7dcbb33312cc9f11ae3a6d73b1ace017a9f19a8bf8f10304fc57977c8efeadff.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-7efa7c0d747afc4b6aed0586ff846c27839c3213ff7ee9f30c89b0d0f17e60e3.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-8493140d788604d498a4e48da4158708572ccc9d60185290a00d549cc84533db.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-8493bb0059b013eaca42fd10cd7d04f0d06a8acaed379eff0d23f3229edde9ee.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-87996b3d6c7a2195438d7038015b06949102bce8c7b8cd8db1f83aaf23cbe489.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-8f096d8171b89f9615d18f95d696dc9e4fb3674e103161a713cdc806f7a68506.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-917732a56ee04bf3a6e127319dda8225210869c82f9828d878162394dba4e078.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-95fe4ef93ee90733db1b67ed7987f80b5aac792f1590b979c68b418d1599eb98.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-9b67658569b343d8b4b61ae0a7dc721f367f2ba33c7b69b9e68bfd5c9bff5206.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-9c8062ea55d070afef68309e58fa987eb37fda44e1efbf68c8ba2af7846cc968.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-a06e1d9f6f95e4c4c2b98310ebddcc9d963cc033582bf2e945e8bf3a301b4247.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-a55265c9b07bd1399961a6f1e757201fd0eebe868ddaf96437111113d80fce92.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-a891a37be5c2d7cce775c2dd33726b0318fd3839beab222a1b22bc6174604207.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-a945191bb4b3e37d6823ed3ad499339d007d69983105de8567777d9daf517b28.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-abe9f7832f2bd799ac44008da031e8d8ab52d4f5fbfc2a7e3974e8873bae55b2.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-aca588cca57a85e4d7fcc40c23cd87e57d53d11ca550d78e7e3d5e39e524fcd3.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-b02f8aafc00a7724510772ac41269e368c5bccf03ef7b4590e0ef6fd1a1bf64f.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-b742e17cabe2d64617e9aa64bafc782172f7a4f8023d1b54f952a0fb39f6b2b8.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-b94e349dbc0daec57f8f8f6e9e2dffb06100b1bb2b41d297c9f3b191da37a83d.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-bd9afa22994aba671dbf7b5f89b53c2ee02f53c0442a81265786a6d52d08512f.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-be60554eca98a5899efc6b49785cecd6444a6d39afed9e4a884ce2dbf162012c.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-bf49702b506c9a1650ece1f8e8d9f14834a902f8caefafe30ded55e2790f2188.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-bfb8ae2e860e451b0868a7b1b50a451d998b2105f9fdfd307b26a1775d145e9f.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-bfcd21ed704cd305db5c17fcdec7d92aa4ac501913c9c9514d8ff92928c0c7e7.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-c3ab694650f49a75b146fb877a92e48c4f20f0d99f70f8ec859fbb763b01a1e5.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-c55542bb9fae544d87fae6f30e0fe8a9088d12075f4442ab4fe2fcd05e472234.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-cb29a6556d35ac630ee0aa885dd7341cf9573bd3efd216ff8a887b87686b03db.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-d0a1f341a89f5f14696b10baa72db9d95551c2b7e5fc67308fd52dc03dd98a92.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-d2ad0a0ca2649c9e4873cfcc1fc66d2d07cc45d0f65c560b06d7b5f592f4fa8a.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-d6cfe78eb635ba0b89ca4021a4dc8182d18ab5b197f30149cd28488eba4c1df5.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-d729b56dea00e49dcdba8cf0001e2811da27351eabe98212db3b589f18fc6f32.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-d9658bfd4e7170b41d03f2ddf2446d0bf54171c0d39d53bf20af2b8437f2ec48.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-dbba7b3d3289425bae711aedbf73fbc3699f857f86f84d95c3b556d05c5658b0.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-dcb96b649d6d63a58efd5d445453a4f3d7869a56ff714b69bedf3d616a0473ca.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-ebd876fbf5362a5900e75bc05f2f11c73c406ef7da4e95097fc6a1c3d1b8bc54.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-eef5cc6bce1cc14eba8f3e68971724ef181e88cffcedd74673615f2026b89a62.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/.sqlx/query-ef56d5fefc5774040d1ee397beadb475f6af02768c22f0e583c74062e2e821ce.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/Cargo.lock +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/README.md +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/migrations/20241007163501_initial.sql +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/migrations/20241211120039_merge_job_priority.sql +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/migrations/20241211121159_basic_indexes.sql +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/migrations/20241212151105_check_segment_records.sql +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/migrations/20250110145554_in_flight_messages.sql +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_binding/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_binding/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/src/fuzzy_query.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/src/query_io.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/src/reader.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/src/request_types.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/src/schema.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/src/search_query.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/src/search_response.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/src/set_query.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/src/stop_words.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/README.md +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/ar.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/az.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/bn.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/ca.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/ch.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/da.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/de.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/el.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/en.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/es.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/eu.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/extract.py +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/fi.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/fr.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/he.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/hu.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/id.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/it.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/kk.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/ne.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/nl.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/no.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/pt.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/ro.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/ru.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/sl.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/sv.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/tg.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/stop_words/tr.json +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_paragraph/tests/reader.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_protos/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_protos/build.py +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_protos/build.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_protos/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_protos/src/nidx.proto +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/src/graph_collector.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/src/io_maps.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/src/schema.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/src/top_unique_n.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/tests/test_graph_query_parser_search.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/tests/test_reader.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/tests/test_writer.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_tantivy/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_tantivy/src/index_reader.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_tantivy/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_tests/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_tests/src/graph.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_tests/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_text/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_text/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_text/src/prefilter.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_text/src/query_io.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_text/src/reader.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_text/src/request_types.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_text/src/resource_indexer.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_text/src/schema.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_text/src/search_query.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_text/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_text/tests/test_flow.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_text/tests/test_search.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_text/tests/test_streaming.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_types/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_types/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_types/src/prefilter.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_types/src/query_language.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/Cargo.toml +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/config.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/data_point/disk_hnsw.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/data_point/mod.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/data_point/node.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/data_point/ops_hnsw.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/data_point/params.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/data_point/ram_hnsw.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/data_point/tests.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/data_point_provider/mod.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/data_point_provider/reader.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/data_types/data_store.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/data_types/mod.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/data_types/trie.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/data_types/trie_ram.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/formula/mod.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/indexer.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/inverted_index/fst_index.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/inverted_index/map.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/inverted_index.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/query_io.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/request_types.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/utils.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/vector_types/dense_f32.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/src/vector_types/mod.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/tests/test_basic_search.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_vector/tests/test_hidden.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/api/grpc.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/api/shards.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/api.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/control.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/errors.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/grpc_server.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/import_export.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/indexer.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/lib.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/main.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/metadata/deletion.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/metadata/index.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/metadata/index_request.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/metadata/merge_job.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/metadata/segment.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/metadata/shard.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/metadata.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/metrics.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/scheduler/audit_task.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/scheduler/log_merge.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/scheduler/merge_task.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/scheduler/metrics_task.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/scheduler/purge_tasks.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/scheduler/vector_merge.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/scheduler.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/searcher/grpc.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/searcher/index_cache.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/searcher/query_language.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/searcher/query_planner.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/searcher/shard_search.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/searcher/shard_selector.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/searcher/shard_suggest.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/searcher/streams.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/searcher/sync.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/searcher.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/segment_store.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/settings.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/telemetry/duration_layer.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/telemetry/log_format.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/telemetry/middleware.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/telemetry.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/tool.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/src/worker.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/tests/common/mod.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/tests/common/services.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/tests/test_date_range_search.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/tests/test_search_filtering.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/tests/test_search_sorting.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/tests/test_searcher_cluster.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/tests/test_security_search.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/tests/test_shards.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/tests/test_shards_api.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/tests/test_suggest.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/tests/test_synced_searcher.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/tests/test_vector_normalization.rs +0 -0
- {nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/tests/test_vectorsets.rs +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: nidx_binding
|
3
|
-
Version: 6.3.4.
|
3
|
+
Version: 6.3.4.post167
|
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.4.
|
7
|
+
version = "6.3.4.post167"
|
8
8
|
license = { text = "AGPL" }
|
9
9
|
description = "Protobuf definitions for nucliadb/nidx"
|
10
10
|
authors = [ { name = "Nuclia", email = "nucliadb@nuclia.com" }]
|
{nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/src/graph_query_parser.rs
RENAMED
@@ -19,10 +19,11 @@
|
|
19
19
|
//
|
20
20
|
use anyhow::anyhow;
|
21
21
|
use nidx_protos::graph_query::FacetFilter;
|
22
|
+
use nidx_protos::graph_query::node::MatchLocation;
|
22
23
|
use nidx_protos::relation::RelationType;
|
23
24
|
use nidx_protos::relation_node::NodeType;
|
24
25
|
use nidx_types::query_language::{BooleanExpression, BooleanOperation, Operator};
|
25
|
-
use tantivy::query::{AllQuery, BooleanQuery, FuzzyTermQuery, Occur, Query, TermQuery};
|
26
|
+
use tantivy::query::{AllQuery, BooleanQuery, FuzzyTermQuery, Occur, Query, TermQuery, TermSetQuery};
|
26
27
|
use tantivy::schema::{Facet, Field, IndexRecordOption};
|
27
28
|
use tantivy::tokenizer::TokenizerManager;
|
28
29
|
|
@@ -41,7 +42,9 @@ pub struct FuzzyTerm {
|
|
41
42
|
#[derive(Clone)]
|
42
43
|
pub enum Term {
|
43
44
|
Exact(String),
|
45
|
+
ExactWord(String),
|
44
46
|
Fuzzy(FuzzyTerm),
|
47
|
+
FuzzyWord(FuzzyTerm),
|
45
48
|
}
|
46
49
|
|
47
50
|
#[derive(Default, Clone)]
|
@@ -467,8 +470,8 @@ impl<'a> GraphQueryParser<'a> {
|
|
467
470
|
|
468
471
|
fn has_node_value(&self, value: &Term, exact_field: Field, tokenized_field: Field) -> Option<Box<dyn Query>> {
|
469
472
|
let text_value = match value {
|
470
|
-
Term::Exact(value) => value,
|
471
|
-
Term::Fuzzy(fuzzy) => &fuzzy.value,
|
473
|
+
Term::Exact(value) | Term::ExactWord(value) => value,
|
474
|
+
Term::Fuzzy(fuzzy) | Term::FuzzyWord(fuzzy) => &fuzzy.value,
|
472
475
|
};
|
473
476
|
if text_value.is_empty() {
|
474
477
|
return None;
|
@@ -482,42 +485,38 @@ impl<'a> GraphQueryParser<'a> {
|
|
482
485
|
tokenized_terms.push(tantivy::Term::from_field_text(tokenized_field, &token.text));
|
483
486
|
}
|
484
487
|
|
485
|
-
// TODO: Rethink this
|
486
|
-
// Current logic:
|
487
|
-
// - Exact match always match the search term against the full field
|
488
|
-
// - Fuzzy + prefix search works does a prefix fuzzy match of the whole entity name
|
489
|
-
// - Fuzzy search looks for entities containing all words in the term with a fuzzy match (tokenized)
|
490
|
-
//
|
491
|
-
// Questions:
|
492
|
-
// - Do we want exact match of a word in the entity? (kind of supported by setting fuzzy distance = 0)
|
493
488
|
let query: Box<dyn Query> = match value {
|
494
489
|
Term::Exact(_) => Box::new(TermQuery::new(exact_term, IndexRecordOption::Basic)),
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
if tokenized_terms.len() > 1 {
|
504
|
-
Box::new(BooleanQuery::intersection(
|
505
|
-
tokenized_terms
|
506
|
-
.into_iter()
|
507
|
-
.map(|term| -> Box<dyn Query> {
|
508
|
-
Box::new(FuzzyTermQuery::new(term, *fuzzy_distance, true))
|
509
|
-
})
|
510
|
-
.collect(),
|
511
|
-
))
|
512
|
-
} else {
|
513
|
-
Box::new(FuzzyTermQuery::new(
|
514
|
-
tokenized_terms.into_iter().next().unwrap(),
|
515
|
-
*fuzzy_distance,
|
516
|
-
true,
|
517
|
-
))
|
518
|
-
}
|
490
|
+
|
491
|
+
Term::ExactWord(_) => Box::new(TermSetQuery::new(tokenized_terms)),
|
492
|
+
|
493
|
+
Term::Fuzzy(fuzzy) => {
|
494
|
+
if fuzzy.is_prefix {
|
495
|
+
Box::new(FuzzyTermQuery::new_prefix(exact_term, fuzzy.fuzzy_distance, true))
|
496
|
+
} else {
|
497
|
+
Box::new(FuzzyTermQuery::new(exact_term, fuzzy.fuzzy_distance, true))
|
519
498
|
}
|
520
|
-
}
|
499
|
+
}
|
500
|
+
|
501
|
+
Term::FuzzyWord(fuzzy) => {
|
502
|
+
let query_builder = if fuzzy.is_prefix {
|
503
|
+
FuzzyTermQuery::new_prefix
|
504
|
+
} else {
|
505
|
+
FuzzyTermQuery::new
|
506
|
+
};
|
507
|
+
|
508
|
+
if tokenized_terms.len() == 1 {
|
509
|
+
let tokenized_term = tokenized_terms.into_iter().next().unwrap();
|
510
|
+
Box::new(query_builder(tokenized_term, fuzzy.fuzzy_distance, true))
|
511
|
+
} else {
|
512
|
+
Box::new(BooleanQuery::intersection(
|
513
|
+
tokenized_terms
|
514
|
+
.into_iter()
|
515
|
+
.map(|term| -> Box<dyn Query> { Box::new(query_builder(term, fuzzy.fuzzy_distance, true)) })
|
516
|
+
.collect(),
|
517
|
+
))
|
518
|
+
}
|
519
|
+
}
|
521
520
|
};
|
522
521
|
|
523
522
|
Some(query)
|
@@ -704,13 +703,56 @@ impl TryFrom<&nidx_protos::graph_query::Node> for Node {
|
|
704
703
|
type Error = anyhow::Error;
|
705
704
|
|
706
705
|
fn try_from(node_pb: &nidx_protos::graph_query::Node) -> Result<Self, Self::Error> {
|
707
|
-
let value = node_pb.value.clone().map(|value|
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
706
|
+
let value = node_pb.value.clone().map(|value| {
|
707
|
+
if let Some(match_kind) = node_pb.new_match_kind {
|
708
|
+
match match_kind {
|
709
|
+
nidx_protos::graph_query::node::NewMatchKind::Exact(exact) => match exact.kind() {
|
710
|
+
MatchLocation::Full => Term::Exact(value),
|
711
|
+
MatchLocation::Prefix => Term::Fuzzy(FuzzyTerm {
|
712
|
+
value,
|
713
|
+
fuzzy_distance: 0,
|
714
|
+
is_prefix: true,
|
715
|
+
}),
|
716
|
+
MatchLocation::Words => Term::ExactWord(value),
|
717
|
+
MatchLocation::PrefixWords => Term::FuzzyWord(FuzzyTerm {
|
718
|
+
value,
|
719
|
+
fuzzy_distance: 0,
|
720
|
+
is_prefix: true,
|
721
|
+
}),
|
722
|
+
},
|
723
|
+
nidx_protos::graph_query::node::NewMatchKind::Fuzzy(fuzzy) => match fuzzy.kind() {
|
724
|
+
MatchLocation::Full => Term::Fuzzy(FuzzyTerm {
|
725
|
+
value,
|
726
|
+
fuzzy_distance: fuzzy.distance as u8,
|
727
|
+
is_prefix: false,
|
728
|
+
}),
|
729
|
+
MatchLocation::Prefix => Term::Fuzzy(FuzzyTerm {
|
730
|
+
value,
|
731
|
+
fuzzy_distance: fuzzy.distance as u8,
|
732
|
+
is_prefix: true,
|
733
|
+
}),
|
734
|
+
MatchLocation::Words => Term::FuzzyWord(FuzzyTerm {
|
735
|
+
value,
|
736
|
+
fuzzy_distance: fuzzy.distance as u8,
|
737
|
+
is_prefix: false,
|
738
|
+
}),
|
739
|
+
MatchLocation::PrefixWords => Term::FuzzyWord(FuzzyTerm {
|
740
|
+
value,
|
741
|
+
fuzzy_distance: fuzzy.distance as u8,
|
742
|
+
is_prefix: true,
|
743
|
+
}),
|
744
|
+
},
|
745
|
+
}
|
746
|
+
} else {
|
747
|
+
match node_pb.match_kind() {
|
748
|
+
nidx_protos::graph_query::node::MatchKind::DeprecatedExact => Term::Exact(value),
|
749
|
+
nidx_protos::graph_query::node::MatchKind::DeprecatedFuzzy => Term::Fuzzy(FuzzyTerm {
|
750
|
+
value,
|
751
|
+
fuzzy_distance: DEFAULT_NODE_VALUE_FUZZY_DISTANCE,
|
752
|
+
is_prefix: true,
|
753
|
+
}),
|
754
|
+
}
|
755
|
+
}
|
714
756
|
});
|
715
757
|
let node_type = node_pb.node_type.map(NodeType::try_from).transpose()?;
|
716
758
|
let node_subtype = node_pb.node_subtype.clone();
|
@@ -439,13 +439,13 @@ impl RelationsReaderService {
|
|
439
439
|
let words: Vec<_> = query.split_whitespace().collect();
|
440
440
|
for word in words {
|
441
441
|
prefix_nodes_q.push(Node {
|
442
|
-
value: Some(Term::
|
442
|
+
value: Some(Term::FuzzyWord(FuzzyTerm {
|
443
443
|
value: word.to_string(),
|
444
444
|
fuzzy_distance: FUZZY_DISTANCE,
|
445
445
|
is_prefix: false,
|
446
446
|
})),
|
447
447
|
..Default::default()
|
448
|
-
})
|
448
|
+
});
|
449
449
|
}
|
450
450
|
|
451
451
|
// add fuzzy query for all prefixes
|
{nidx_binding-6.3.4.post161 → nidx_binding-6.3.4.post167}/nidx_relation/tests/test_graph_search.rs
RENAMED
@@ -21,7 +21,8 @@ mod common;
|
|
21
21
|
|
22
22
|
use std::collections::{HashMap, HashSet};
|
23
23
|
|
24
|
-
use nidx_protos::graph_query::node::
|
24
|
+
use nidx_protos::graph_query::node::{ExactMatch, FuzzyMatch, NewMatchKind};
|
25
|
+
use nidx_protos::graph_query::node::{MatchKind, MatchLocation};
|
25
26
|
use nidx_protos::graph_query::path_query::Query;
|
26
27
|
use nidx_protos::graph_query::{BoolQuery, FacetFilter, Node, Path, PathQuery, Relation};
|
27
28
|
use nidx_protos::graph_search_request::QueryKind;
|
@@ -132,41 +133,36 @@ fn test_relation_search() -> anyhow::Result<()> {
|
|
132
133
|
fn test_graph_node_query() -> anyhow::Result<()> {
|
133
134
|
let reader = create_reader()?;
|
134
135
|
|
135
|
-
// (
|
136
|
-
let result = search(&reader, Query::Path(Path::default()))?;
|
137
|
-
assert_eq!(result.graph.len(), 17);
|
138
|
-
|
139
|
-
// (:PERSON)-[]->()
|
136
|
+
// (:Anna)-[]->()
|
140
137
|
let result = search(
|
141
138
|
&reader,
|
142
139
|
Query::Path(Path {
|
143
140
|
source: Some(Node {
|
144
|
-
|
141
|
+
value: Some("Anna".to_string()),
|
145
142
|
..Default::default()
|
146
143
|
}),
|
147
144
|
..Default::default()
|
148
145
|
}),
|
149
146
|
)?;
|
150
|
-
|
147
|
+
let relations = friendly_parse(&result);
|
148
|
+
assert_eq!(relations.len(), 4);
|
149
|
+
assert!(relations.contains(&("Anna", "FOLLOW", "Erin")));
|
150
|
+
assert!(relations.contains(&("Anna", "LIVE_IN", "New York")));
|
151
|
+
assert!(relations.contains(&("Anna", "LOVE", "Cat")));
|
152
|
+
assert!(relations.contains(&("Anna", "WORK_IN", "New York")));
|
151
153
|
|
152
|
-
// (:
|
154
|
+
// (:PERSON)-[]->()
|
153
155
|
let result = search(
|
154
156
|
&reader,
|
155
157
|
Query::Path(Path {
|
156
158
|
source: Some(Node {
|
157
159
|
node_subtype: Some("PERSON".to_string()),
|
158
|
-
value: Some("Anna".to_string()),
|
159
160
|
..Default::default()
|
160
161
|
}),
|
161
162
|
..Default::default()
|
162
163
|
}),
|
163
164
|
)?;
|
164
|
-
|
165
|
-
assert_eq!(relations.len(), 4);
|
166
|
-
assert!(relations.contains(&("Anna", "FOLLOW", "Erin")));
|
167
|
-
assert!(relations.contains(&("Anna", "LIVE_IN", "New York")));
|
168
|
-
assert!(relations.contains(&("Anna", "LOVE", "Cat")));
|
169
|
-
assert!(relations.contains(&("Anna", "WORK_IN", "New York")));
|
165
|
+
assert_eq!(result.graph.len(), 12);
|
170
166
|
|
171
167
|
// ()-[]->(:Anna)
|
172
168
|
let result = search(
|
@@ -210,18 +206,136 @@ fn test_graph_node_query() -> anyhow::Result<()> {
|
|
210
206
|
Ok(())
|
211
207
|
}
|
212
208
|
|
209
|
+
#[test]
|
210
|
+
fn test_graph_node_exact_matches() -> anyhow::Result<()> {
|
211
|
+
let reader = create_reader()?;
|
212
|
+
|
213
|
+
// Exact match (full)
|
214
|
+
|
215
|
+
let result = search(
|
216
|
+
&reader,
|
217
|
+
Query::Path(Path {
|
218
|
+
destination: Some(Node {
|
219
|
+
value: Some("Computer science".to_string()),
|
220
|
+
new_match_kind: Some(NewMatchKind::Exact(ExactMatch {
|
221
|
+
kind: MatchLocation::Full.into(),
|
222
|
+
})),
|
223
|
+
..Default::default()
|
224
|
+
}),
|
225
|
+
..Default::default()
|
226
|
+
}),
|
227
|
+
)?;
|
228
|
+
let relations = friendly_parse(&result);
|
229
|
+
assert_eq!(relations.len(), 1);
|
230
|
+
assert!(relations.contains(&("Margaret", "WORK_IN", "Computer science")));
|
231
|
+
|
232
|
+
// Prefix
|
233
|
+
|
234
|
+
let result = search(
|
235
|
+
&reader,
|
236
|
+
Query::Path(Path {
|
237
|
+
destination: Some(Node {
|
238
|
+
value: Some("Computer sci".to_string()),
|
239
|
+
new_match_kind: Some(NewMatchKind::Exact(ExactMatch {
|
240
|
+
kind: MatchLocation::Prefix.into(),
|
241
|
+
})),
|
242
|
+
..Default::default()
|
243
|
+
}),
|
244
|
+
..Default::default()
|
245
|
+
}),
|
246
|
+
)?;
|
247
|
+
let relations = friendly_parse(&result);
|
248
|
+
assert_eq!(relations.len(), 1);
|
249
|
+
assert!(relations.contains(&("Margaret", "WORK_IN", "Computer science")));
|
250
|
+
|
251
|
+
let result = search(
|
252
|
+
&reader,
|
253
|
+
Query::Path(Path {
|
254
|
+
destination: Some(Node {
|
255
|
+
value: Some("Compu".to_string()),
|
256
|
+
new_match_kind: Some(NewMatchKind::Exact(ExactMatch {
|
257
|
+
kind: MatchLocation::Prefix.into(),
|
258
|
+
})),
|
259
|
+
..Default::default()
|
260
|
+
}),
|
261
|
+
..Default::default()
|
262
|
+
}),
|
263
|
+
)?;
|
264
|
+
let relations = friendly_parse(&result);
|
265
|
+
assert_eq!(relations.len(), 1);
|
266
|
+
assert!(relations.contains(&("Margaret", "WORK_IN", "Computer science")));
|
267
|
+
|
268
|
+
// Exact words
|
269
|
+
|
270
|
+
let result = search(
|
271
|
+
&reader,
|
272
|
+
Query::Path(Path {
|
273
|
+
destination: Some(Node {
|
274
|
+
value: Some("Computer".to_string()),
|
275
|
+
new_match_kind: Some(NewMatchKind::Exact(ExactMatch {
|
276
|
+
kind: MatchLocation::Words.into(),
|
277
|
+
})),
|
278
|
+
..Default::default()
|
279
|
+
}),
|
280
|
+
..Default::default()
|
281
|
+
}),
|
282
|
+
)?;
|
283
|
+
let relations = friendly_parse(&result);
|
284
|
+
assert_eq!(relations.len(), 1);
|
285
|
+
assert!(relations.contains(&("Margaret", "WORK_IN", "Computer science")));
|
286
|
+
|
287
|
+
let result = search(
|
288
|
+
&reader,
|
289
|
+
Query::Path(Path {
|
290
|
+
destination: Some(Node {
|
291
|
+
value: Some("science".to_string()),
|
292
|
+
new_match_kind: Some(NewMatchKind::Exact(ExactMatch {
|
293
|
+
kind: MatchLocation::Words.into(),
|
294
|
+
})),
|
295
|
+
..Default::default()
|
296
|
+
}),
|
297
|
+
..Default::default()
|
298
|
+
}),
|
299
|
+
)?;
|
300
|
+
let relations = friendly_parse(&result);
|
301
|
+
assert_eq!(relations.len(), 1);
|
302
|
+
assert!(relations.contains(&("Margaret", "WORK_IN", "Computer science")));
|
303
|
+
|
304
|
+
// Prefix words
|
305
|
+
|
306
|
+
let result = search(
|
307
|
+
&reader,
|
308
|
+
Query::Path(Path {
|
309
|
+
destination: Some(Node {
|
310
|
+
value: Some("sci".to_string()),
|
311
|
+
new_match_kind: Some(NewMatchKind::Exact(ExactMatch {
|
312
|
+
kind: MatchLocation::PrefixWords.into(),
|
313
|
+
})),
|
314
|
+
..Default::default()
|
315
|
+
}),
|
316
|
+
..Default::default()
|
317
|
+
}),
|
318
|
+
)?;
|
319
|
+
let relations = friendly_parse(&result);
|
320
|
+
assert_eq!(relations.len(), 1);
|
321
|
+
assert!(relations.contains(&("Margaret", "WORK_IN", "Computer science")));
|
322
|
+
|
323
|
+
Ok(())
|
324
|
+
}
|
325
|
+
|
213
326
|
#[test]
|
214
327
|
fn test_graph_fuzzy_node_query() -> anyhow::Result<()> {
|
215
328
|
let reader = create_reader()?;
|
216
329
|
|
217
330
|
// (:~Anastas)
|
331
|
+
#[allow(deprecated)]
|
218
332
|
let result = search(
|
219
333
|
&reader,
|
220
334
|
Query::Path(Path {
|
221
335
|
source: Some(Node {
|
222
336
|
node_subtype: Some("PERSON".to_string()),
|
223
337
|
value: Some("Anastas".to_string()),
|
224
|
-
match_kind: MatchKind::
|
338
|
+
match_kind: MatchKind::DeprecatedFuzzy.into(),
|
225
339
|
..Default::default()
|
226
340
|
}),
|
227
341
|
..Default::default()
|
@@ -232,13 +346,14 @@ fn test_graph_fuzzy_node_query() -> anyhow::Result<()> {
|
|
232
346
|
assert!(relations.contains(&("Anastasia", "IS_FRIEND", "Anna")));
|
233
347
|
|
234
348
|
// (:~AnXstXsia) with fuzzy=1
|
349
|
+
#[allow(deprecated)]
|
235
350
|
let result = search(
|
236
351
|
&reader,
|
237
352
|
Query::Path(Path {
|
238
353
|
source: Some(Node {
|
239
354
|
node_subtype: Some("PERSON".to_string()),
|
240
355
|
value: Some("AnXstXsia".to_string()),
|
241
|
-
match_kind: MatchKind::
|
356
|
+
match_kind: MatchKind::DeprecatedFuzzy.into(),
|
242
357
|
..Default::default()
|
243
358
|
}),
|
244
359
|
..Default::default()
|
@@ -248,13 +363,14 @@ fn test_graph_fuzzy_node_query() -> anyhow::Result<()> {
|
|
248
363
|
assert_eq!(relations.len(), 0);
|
249
364
|
|
250
365
|
// (:~AnXstasia) with fuzzy=1
|
366
|
+
#[allow(deprecated)]
|
251
367
|
let result = search(
|
252
368
|
&reader,
|
253
369
|
Query::Path(Path {
|
254
370
|
source: Some(Node {
|
255
371
|
node_subtype: Some("PERSON".to_string()),
|
256
372
|
value: Some("AnXstasia".to_string()),
|
257
|
-
match_kind: MatchKind::
|
373
|
+
match_kind: MatchKind::DeprecatedFuzzy.into(),
|
258
374
|
..Default::default()
|
259
375
|
}),
|
260
376
|
..Default::default()
|
@@ -265,13 +381,14 @@ fn test_graph_fuzzy_node_query() -> anyhow::Result<()> {
|
|
265
381
|
assert!(relations.contains(&("Anastasia", "IS_FRIEND", "Anna")));
|
266
382
|
|
267
383
|
// (:^~Ana) matches Anna & Anastasia
|
384
|
+
#[allow(deprecated)]
|
268
385
|
let result = search(
|
269
386
|
&reader,
|
270
387
|
Query::Path(Path {
|
271
388
|
source: Some(Node {
|
272
389
|
node_subtype: Some("PERSON".to_string()),
|
273
390
|
value: Some("Ana".to_string()),
|
274
|
-
match_kind: MatchKind::
|
391
|
+
match_kind: MatchKind::DeprecatedFuzzy.into(),
|
275
392
|
..Default::default()
|
276
393
|
}),
|
277
394
|
..Default::default()
|
@@ -288,6 +405,129 @@ fn test_graph_fuzzy_node_query() -> anyhow::Result<()> {
|
|
288
405
|
Ok(())
|
289
406
|
}
|
290
407
|
|
408
|
+
#[test]
|
409
|
+
fn test_graph_node_fuzzy_matches() -> anyhow::Result<()> {
|
410
|
+
let reader = create_reader()?;
|
411
|
+
|
412
|
+
// Fuzzy (full)
|
413
|
+
|
414
|
+
let result = search(
|
415
|
+
&reader,
|
416
|
+
Query::Path(Path {
|
417
|
+
destination: Some(Node {
|
418
|
+
value: Some("Computer scXence".to_string()),
|
419
|
+
new_match_kind: Some(NewMatchKind::Fuzzy(FuzzyMatch {
|
420
|
+
kind: MatchLocation::Full.into(),
|
421
|
+
distance: 1,
|
422
|
+
})),
|
423
|
+
..Default::default()
|
424
|
+
}),
|
425
|
+
..Default::default()
|
426
|
+
}),
|
427
|
+
)?;
|
428
|
+
let relations = friendly_parse(&result);
|
429
|
+
assert_eq!(relations.len(), 1);
|
430
|
+
assert!(relations.contains(&("Margaret", "WORK_IN", "Computer science")));
|
431
|
+
|
432
|
+
// Fuzzy prefix
|
433
|
+
|
434
|
+
let result = search(
|
435
|
+
&reader,
|
436
|
+
Query::Path(Path {
|
437
|
+
destination: Some(Node {
|
438
|
+
value: Some("CompuXer sci".to_string()),
|
439
|
+
new_match_kind: Some(NewMatchKind::Fuzzy(FuzzyMatch {
|
440
|
+
kind: MatchLocation::Prefix.into(),
|
441
|
+
distance: 1,
|
442
|
+
})),
|
443
|
+
..Default::default()
|
444
|
+
}),
|
445
|
+
..Default::default()
|
446
|
+
}),
|
447
|
+
)?;
|
448
|
+
let relations = friendly_parse(&result);
|
449
|
+
assert_eq!(relations.len(), 1);
|
450
|
+
assert!(relations.contains(&("Margaret", "WORK_IN", "Computer science")));
|
451
|
+
|
452
|
+
let result = search(
|
453
|
+
&reader,
|
454
|
+
Query::Path(Path {
|
455
|
+
destination: Some(Node {
|
456
|
+
value: Some("CoXpu".to_string()),
|
457
|
+
new_match_kind: Some(NewMatchKind::Fuzzy(FuzzyMatch {
|
458
|
+
kind: MatchLocation::Prefix.into(),
|
459
|
+
distance: 1,
|
460
|
+
})),
|
461
|
+
..Default::default()
|
462
|
+
}),
|
463
|
+
..Default::default()
|
464
|
+
}),
|
465
|
+
)?;
|
466
|
+
let relations = friendly_parse(&result);
|
467
|
+
assert_eq!(relations.len(), 1);
|
468
|
+
assert!(relations.contains(&("Margaret", "WORK_IN", "Computer science")));
|
469
|
+
|
470
|
+
// Fuzzy words
|
471
|
+
|
472
|
+
let result = search(
|
473
|
+
&reader,
|
474
|
+
Query::Path(Path {
|
475
|
+
destination: Some(Node {
|
476
|
+
value: Some("ComXuter".to_string()),
|
477
|
+
new_match_kind: Some(NewMatchKind::Fuzzy(FuzzyMatch {
|
478
|
+
kind: MatchLocation::Words.into(),
|
479
|
+
distance: 1,
|
480
|
+
})),
|
481
|
+
..Default::default()
|
482
|
+
}),
|
483
|
+
..Default::default()
|
484
|
+
}),
|
485
|
+
)?;
|
486
|
+
let relations = friendly_parse(&result);
|
487
|
+
assert_eq!(relations.len(), 1);
|
488
|
+
assert!(relations.contains(&("Margaret", "WORK_IN", "Computer science")));
|
489
|
+
|
490
|
+
let result = search(
|
491
|
+
&reader,
|
492
|
+
Query::Path(Path {
|
493
|
+
destination: Some(Node {
|
494
|
+
value: Some("sciXnce".to_string()),
|
495
|
+
new_match_kind: Some(NewMatchKind::Fuzzy(FuzzyMatch {
|
496
|
+
kind: MatchLocation::Words.into(),
|
497
|
+
distance: 1,
|
498
|
+
})),
|
499
|
+
..Default::default()
|
500
|
+
}),
|
501
|
+
..Default::default()
|
502
|
+
}),
|
503
|
+
)?;
|
504
|
+
let relations = friendly_parse(&result);
|
505
|
+
assert_eq!(relations.len(), 1);
|
506
|
+
assert!(relations.contains(&("Margaret", "WORK_IN", "Computer science")));
|
507
|
+
|
508
|
+
// Fuzzy prefix words
|
509
|
+
|
510
|
+
let result = search(
|
511
|
+
&reader,
|
512
|
+
Query::Path(Path {
|
513
|
+
destination: Some(Node {
|
514
|
+
value: Some("scXen".to_string()),
|
515
|
+
new_match_kind: Some(NewMatchKind::Fuzzy(FuzzyMatch {
|
516
|
+
kind: MatchLocation::PrefixWords.into(),
|
517
|
+
distance: 1,
|
518
|
+
})),
|
519
|
+
..Default::default()
|
520
|
+
}),
|
521
|
+
..Default::default()
|
522
|
+
}),
|
523
|
+
)?;
|
524
|
+
let relations = friendly_parse(&result);
|
525
|
+
assert_eq!(relations.len(), 1);
|
526
|
+
assert!(relations.contains(&("Margaret", "WORK_IN", "Computer science")));
|
527
|
+
|
528
|
+
Ok(())
|
529
|
+
}
|
530
|
+
|
291
531
|
#[test]
|
292
532
|
fn test_graph_relation_query() -> anyhow::Result<()> {
|
293
533
|
let reader = create_reader()?;
|
@@ -392,6 +632,10 @@ fn test_graph_relation_query() -> anyhow::Result<()> {
|
|
392
632
|
fn test_graph_directed_path_query() -> anyhow::Result<()> {
|
393
633
|
let reader = create_reader()?;
|
394
634
|
|
635
|
+
// ()-[]->()
|
636
|
+
let result = search(&reader, Query::Path(Path::default()))?;
|
637
|
+
assert_eq!(result.graph.len(), 17);
|
638
|
+
|
395
639
|
// (:Erin)-[]->(:UK)
|
396
640
|
let result = search(
|
397
641
|
&reader,
|
@@ -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.4.
|
16
|
+
version = "6.3.4.post167"
|
17
17
|
|
18
18
|
[project.urls]
|
19
19
|
Homepage = "https://nuclia.com"
|
@@ -663,6 +663,7 @@ async fn test_graph_search__fuzzy_node_query(pool: PgPool) -> anyhow::Result<()>
|
|
663
663
|
let shard_id = setup_knowledge_graph(&mut fixture).await?;
|
664
664
|
|
665
665
|
// (:~Anastas)
|
666
|
+
#[allow(deprecated)]
|
666
667
|
let response = fixture
|
667
668
|
.searcher_client
|
668
669
|
.graph_search(GraphSearchRequest {
|
@@ -672,7 +673,7 @@ async fn test_graph_search__fuzzy_node_query(pool: PgPool) -> anyhow::Result<()>
|
|
672
673
|
query: Some(path_query::Query::Path(graph_query::Path {
|
673
674
|
source: Some(graph_query::Node {
|
674
675
|
value: Some("Anastas".to_string()),
|
675
|
-
match_kind: MatchKind::
|
676
|
+
match_kind: MatchKind::DeprecatedFuzzy.into(),
|
676
677
|
..Default::default()
|
677
678
|
}),
|
678
679
|
..Default::default()
|
@@ -689,6 +690,7 @@ async fn test_graph_search__fuzzy_node_query(pool: PgPool) -> anyhow::Result<()>
|
|
689
690
|
assert!(relations.contains(&("Anastasia", "IS_FRIEND", "Anna")));
|
690
691
|
|
691
692
|
// (:~AnXstXsiX)
|
693
|
+
#[allow(deprecated)]
|
692
694
|
let response = fixture
|
693
695
|
.searcher_client
|
694
696
|
.graph_search(GraphSearchRequest {
|
@@ -698,7 +700,7 @@ async fn test_graph_search__fuzzy_node_query(pool: PgPool) -> anyhow::Result<()>
|
|
698
700
|
query: Some(path_query::Query::Path(graph_query::Path {
|
699
701
|
source: Some(graph_query::Node {
|
700
702
|
value: Some("AnXstXsiX".to_string()),
|
701
|
-
match_kind: MatchKind::
|
703
|
+
match_kind: MatchKind::DeprecatedFuzzy.into(),
|
702
704
|
..Default::default()
|
703
705
|
}),
|
704
706
|
..Default::default()
|
@@ -714,6 +716,7 @@ async fn test_graph_search__fuzzy_node_query(pool: PgPool) -> anyhow::Result<()>
|
|
714
716
|
assert_eq!(relations.len(), 0);
|
715
717
|
|
716
718
|
// (:~Ansatasia)
|
719
|
+
#[allow(deprecated)]
|
717
720
|
let response = fixture
|
718
721
|
.searcher_client
|
719
722
|
.graph_search(GraphSearchRequest {
|
@@ -723,7 +726,7 @@ async fn test_graph_search__fuzzy_node_query(pool: PgPool) -> anyhow::Result<()>
|
|
723
726
|
query: Some(path_query::Query::Path(graph_query::Path {
|
724
727
|
source: Some(graph_query::Node {
|
725
728
|
value: Some("Ansatasia".to_string()),
|
726
|
-
match_kind: MatchKind::
|
729
|
+
match_kind: MatchKind::DeprecatedFuzzy.into(),
|
727
730
|
..Default::default()
|
728
731
|
}),
|
729
732
|
..Default::default()
|
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
|