nidx-binding 6.7.2.post490__tar.gz → 6.7.2.post495__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.7.2.post490 → nidx_binding-6.7.2.post495}/PKG-INFO +1 -1
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/query_parser/fuzzy_parser.rs +27 -12
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/query_parser/keyword_parser.rs +37 -18
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/query_parser/tokenizer.rs +14 -1
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/query_parser.rs +35 -3
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_protos/pyproject.toml +1 -1
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/pyproject.toml +1 -1
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.config/nextest.toml +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-0cfce9b29547f8f5bafa6e440f86103be7b8c4ad2fd92db9ac223f4efbe23d10.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-1a561eed00f3dbe868bf5030059793300209179dc8fb73e4b57a54b5e81262fe.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-1d3fca2682e25a01143da92285297f134a6a105a96f64d87e0db3abb219855e4.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-249b3b57c27a71baa823f1fe0f0bba9c9af36f61c28f731e58beea60ec48e687.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-24cb6b683daa42d7125f862e25943ab4be7bf275cd8739f8da4859d701795e1a.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-263c8fce6db5b03bbd012fafdba6943cbee6ed7eb8976cdef4f5b01dde7ca6fd.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-2a5d92fb1638df830a4477a7cdf24e6db6b43034b7bbe74fdfb63e8afe2c4071.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-2b065a363f58caed60e3706603c1260dbf5a4c795604a5b68edda22eb07fec1b.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-3fc3cb39934683de8cd475ce1368c8373453eb1e01f81587d66b9d14b109ce6e.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-48f33b77b7c1633467b0b2efcaa1d3c207e7757e4f1d83b40d15e6ca365f7771.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-4ae09f2c08e2f324bee01bb8487a8f37678a1c5e9d327339235c50d4921a8949.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-4d7a76fa413c9ef0ce2a47ac7bb7e01d3e6a2aabded9487d21010a53efee8852.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-4fcbdd6657c7dc9b60b3a563dd41711b3dbcf72ce063427b7a01f8cddf34c244.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-577109ac00ccfbd38ecaccab94116f2f46a4caf5612afa372cded197123c1e08.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-5db25f97d8578d6d78f2f6bd4b72cc82a9b1b82805c6422d967ac63b20d99db4.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-5ec3233a3a23e926055056d46bdde17836a633066dbb5f349502648cd3ea9a60.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-66edb6ea424d8681927dcddb6bac5f1239175f4775d1f40417ba15054b0c6f19.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-6f9c6d201c1b5712efb68c363bffd3e0169c11f2a8f925e8cd4e8808599ff7b4.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-733c3ebacc86f444bf5e2dd79ade660c291e88a00fc09b722f6e2e191545874c.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-7a3bf27c330c468a596e8a297cf7d8b192e31e67ecc5177c1267f579e8e247c7.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-7a7e59e47b30b12237511fd3d7da2d17b0471ad2b006af48d6a6f587c779692b.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-7dcbb33312cc9f11ae3a6d73b1ace017a9f19a8bf8f10304fc57977c8efeadff.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-7efa7c0d747afc4b6aed0586ff846c27839c3213ff7ee9f30c89b0d0f17e60e3.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-8493140d788604d498a4e48da4158708572ccc9d60185290a00d549cc84533db.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-8493bb0059b013eaca42fd10cd7d04f0d06a8acaed379eff0d23f3229edde9ee.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-87996b3d6c7a2195438d7038015b06949102bce8c7b8cd8db1f83aaf23cbe489.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-8d33717587c6ee8f5fc339a80b1212a73d6c03e45856b1d55457fc8074709dd0.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-8f096d8171b89f9615d18f95d696dc9e4fb3674e103161a713cdc806f7a68506.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-917732a56ee04bf3a6e127319dda8225210869c82f9828d878162394dba4e078.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-95fe4ef93ee90733db1b67ed7987f80b5aac792f1590b979c68b418d1599eb98.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-9b67658569b343d8b4b61ae0a7dc721f367f2ba33c7b69b9e68bfd5c9bff5206.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-9c8062ea55d070afef68309e58fa987eb37fda44e1efbf68c8ba2af7846cc968.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-a06e1d9f6f95e4c4c2b98310ebddcc9d963cc033582bf2e945e8bf3a301b4247.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-a55265c9b07bd1399961a6f1e757201fd0eebe868ddaf96437111113d80fce92.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-a60ec2f66f1e7b84189e5b089f2087a29ff6a64326a3743dea935bbc58ee77fa.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-a891a37be5c2d7cce775c2dd33726b0318fd3839beab222a1b22bc6174604207.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-a945191bb4b3e37d6823ed3ad499339d007d69983105de8567777d9daf517b28.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-abe9f7832f2bd799ac44008da031e8d8ab52d4f5fbfc2a7e3974e8873bae55b2.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-aca588cca57a85e4d7fcc40c23cd87e57d53d11ca550d78e7e3d5e39e524fcd3.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-b02f8aafc00a7724510772ac41269e368c5bccf03ef7b4590e0ef6fd1a1bf64f.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-b742e17cabe2d64617e9aa64bafc782172f7a4f8023d1b54f952a0fb39f6b2b8.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-b94e349dbc0daec57f8f8f6e9e2dffb06100b1bb2b41d297c9f3b191da37a83d.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-bd9afa22994aba671dbf7b5f89b53c2ee02f53c0442a81265786a6d52d08512f.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-be60554eca98a5899efc6b49785cecd6444a6d39afed9e4a884ce2dbf162012c.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-bf49702b506c9a1650ece1f8e8d9f14834a902f8caefafe30ded55e2790f2188.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-bfcd21ed704cd305db5c17fcdec7d92aa4ac501913c9c9514d8ff92928c0c7e7.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-c3ab694650f49a75b146fb877a92e48c4f20f0d99f70f8ec859fbb763b01a1e5.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-c55542bb9fae544d87fae6f30e0fe8a9088d12075f4442ab4fe2fcd05e472234.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-cb29a6556d35ac630ee0aa885dd7341cf9573bd3efd216ff8a887b87686b03db.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-d0a1f341a89f5f14696b10baa72db9d95551c2b7e5fc67308fd52dc03dd98a92.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-d2ad0a0ca2649c9e4873cfcc1fc66d2d07cc45d0f65c560b06d7b5f592f4fa8a.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-d6cfe78eb635ba0b89ca4021a4dc8182d18ab5b197f30149cd28488eba4c1df5.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-d729b56dea00e49dcdba8cf0001e2811da27351eabe98212db3b589f18fc6f32.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-d9658bfd4e7170b41d03f2ddf2446d0bf54171c0d39d53bf20af2b8437f2ec48.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-dbba7b3d3289425bae711aedbf73fbc3699f857f86f84d95c3b556d05c5658b0.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-dcb96b649d6d63a58efd5d445453a4f3d7869a56ff714b69bedf3d616a0473ca.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-ebd876fbf5362a5900e75bc05f2f11c73c406ef7da4e95097fc6a1c3d1b8bc54.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-eef5cc6bce1cc14eba8f3e68971724ef181e88cffcedd74673615f2026b89a62.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/.sqlx/query-ef56d5fefc5774040d1ee397beadb475f6af02768c22f0e583c74062e2e821ce.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/Cargo.lock +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/Cargo.toml +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/README.md +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/migrations/20241007163501_initial.sql +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/migrations/20241211120039_merge_job_priority.sql +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/migrations/20241211121159_basic_indexes.sql +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/migrations/20241212151105_check_segment_records.sql +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/migrations/20250110145554_in_flight_messages.sql +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_binding/Cargo.toml +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_binding/src/lib.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/Cargo.toml +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/fuzzy_query.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/lib.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/query_io.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/query_parser/stop_words.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/reader.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/request_types.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/resource_indexer.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/schema.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/search_query.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/search_response.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/set_query.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/README.md +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/ar.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/az.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/bn.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/ca.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/ch.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/da.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/de.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/el.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/en.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/es.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/eu.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/extract.py +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/fi.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/fr.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/he.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/hu.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/id.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/it.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/kk.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/ne.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/nl.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/no.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/pt.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/ro.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/ru.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/sl.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/sv.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/tg.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/tr.json +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/tests/common/mod.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/tests/reader.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_protos/Cargo.toml +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_protos/build.py +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_protos/build.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_protos/nidx.proto +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_protos/nodereader.proto +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_protos/noderesources.proto +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_protos/nodewriter.proto +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_protos/src/lib.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_relation/Cargo.toml +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_relation/src/graph_collector.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_relation/src/graph_query_parser.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_relation/src/io_maps.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_relation/src/lib.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_relation/src/reader.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_relation/src/resource_indexer.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_relation/src/schema.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_relation/src/top_unique_n.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_relation/tests/common/mod.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_relation/tests/test_graph_query_parser_search.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_relation/tests/test_graph_search.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_relation/tests/test_writer.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_tantivy/Cargo.toml +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_tantivy/src/index_reader.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_tantivy/src/lib.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_tantivy/src/utils.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_tests/Cargo.toml +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_tests/src/graph.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_tests/src/lib.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_text/Cargo.toml +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_text/src/lib.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_text/src/prefilter.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_text/src/query_io.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_text/src/reader.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_text/src/request_types.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_text/src/resource_indexer.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_text/src/schema.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_text/src/search_query.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_text/tests/common/mod.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_text/tests/test_deletions.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_text/tests/test_flow.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_text/tests/test_search.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_text/tests/test_streaming.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_types/Cargo.toml +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_types/src/lib.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_types/src/prefilter.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_types/src/query_language.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/Cargo.toml +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/config.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/data_store/v1/node.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/data_store/v1/store.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/data_store/v1/trie.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/data_store/v1/trie_ram.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/data_store/v1.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/data_store/v2/paragraph_store.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/data_store/v2/vector_store.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/data_store/v2.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/data_store.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/data_types.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/formula.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/hnsw/disk_hnsw.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/hnsw/ops_hnsw.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/hnsw/params.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/hnsw/ram_hnsw.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/hnsw.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/indexer.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/inverted_index/fst_index.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/inverted_index/map.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/inverted_index.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/lib.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/multivector.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/query_io.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/request_types.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/searcher.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/segment/tests.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/segment.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/utils.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/vector_types/dense_f32.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/src/vector_types/mod.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/tests/common/mod.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/tests/test_basic_search.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/tests/test_hidden.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_vector/tests/test_maxsim.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/api/grpc.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/api/shards.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/api.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/control.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/errors.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/grpc_server.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/import_export.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/indexer.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/lib.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/main.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/metadata/deletion.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/metadata/index.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/metadata/index_request.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/metadata/merge_job.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/metadata/segment.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/metadata/shard.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/metadata.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/metrics.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/scheduler/audit_task.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/scheduler/log_merge.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/scheduler/merge_task.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/scheduler/metrics_task.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/scheduler/purge_tasks.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/scheduler/vector_merge.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/scheduler.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/searcher/grpc.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/searcher/index_cache.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/searcher/query_language.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/searcher/query_planner.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/searcher/shard_search.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/searcher/shard_selector.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/searcher/shard_suggest.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/searcher/streams.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/searcher/sync.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/searcher.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/segment_store.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/settings.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/telemetry/duration_layer.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/telemetry/log_format.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/telemetry/middleware.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/telemetry.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/tool.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/utilization_tracker.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/src/worker.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/tests/common/mod.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/tests/common/services.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/tests/test_date_range_search.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/tests/test_search_filtering.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/tests/test_search_relations.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/tests/test_search_sorting.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/tests/test_searcher_cluster.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/tests/test_security_search.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/tests/test_shards.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/tests/test_shards_api.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/tests/test_suggest.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/tests/test_synced_searcher.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/tests/test_vector_normalization.rs +0 -0
- {nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/tests/test_vectorsets.rs +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: nidx_binding
|
3
|
-
Version: 6.7.2.
|
3
|
+
Version: 6.7.2.post495
|
4
4
|
Classifier: Programming Language :: Rust
|
5
5
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
6
6
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
@@ -30,6 +30,7 @@ use crate::fuzzy_query::FuzzyTermQuery;
|
|
30
30
|
use crate::schema::ParagraphSchema;
|
31
31
|
use crate::search_query::SharedTermC;
|
32
32
|
|
33
|
+
use super::FallbackQuery;
|
33
34
|
use super::keyword_parser;
|
34
35
|
use super::tokenizer::Token;
|
35
36
|
|
@@ -53,7 +54,13 @@ pub const FUZZY_DISTANCE: u8 = 1;
|
|
53
54
|
/// literals will be searched as fuzzy. The last literal can be searched as a
|
54
55
|
/// fuzzy prefix if a suggest-like feature is desired.
|
55
56
|
///
|
56
|
-
pub fn parse_fuzzy_query(
|
57
|
+
pub fn parse_fuzzy_query(
|
58
|
+
query: &[Token],
|
59
|
+
term_collector: SharedTermC,
|
60
|
+
last_literal_as_prefix: bool,
|
61
|
+
) -> Result<Box<dyn Query>, FallbackQuery> {
|
62
|
+
let mut errors = vec![];
|
63
|
+
|
57
64
|
let last_literal_index = if last_literal_as_prefix {
|
58
65
|
query.iter().rposition(|token| matches!(token, Token::Literal(_)))
|
59
66
|
} else {
|
@@ -92,8 +99,14 @@ pub fn parse_fuzzy_query(query: &[Token], term_collector: SharedTermC, last_lite
|
|
92
99
|
subqueries.push((Occur::Should, q));
|
93
100
|
}
|
94
101
|
Token::Quoted(quoted) => {
|
95
|
-
|
96
|
-
|
102
|
+
match keyword_parser::parse_quoted(&schema, quoted) {
|
103
|
+
Ok(q) => {
|
104
|
+
subqueries.push((Occur::Should, q));
|
105
|
+
}
|
106
|
+
Err(error) => {
|
107
|
+
errors.push(error);
|
108
|
+
}
|
109
|
+
};
|
97
110
|
}
|
98
111
|
Token::Excluded(excluded) => {
|
99
112
|
let q = keyword_parser::parse_excluded(&schema, excluded);
|
@@ -102,13 +115,15 @@ pub fn parse_fuzzy_query(query: &[Token], term_collector: SharedTermC, last_lite
|
|
102
115
|
}
|
103
116
|
}
|
104
117
|
|
105
|
-
if subqueries.is_empty() {
|
118
|
+
let q = if subqueries.is_empty() {
|
106
119
|
Box::new(AllQuery)
|
107
120
|
} else if subqueries.len() == 1 {
|
108
121
|
subqueries.pop().unwrap().1
|
109
122
|
} else {
|
110
123
|
Box::new(BooleanQuery::new(subqueries))
|
111
|
-
}
|
124
|
+
};
|
125
|
+
|
126
|
+
if errors.is_empty() { Ok(q) } else { Err((q, errors)) }
|
112
127
|
}
|
113
128
|
|
114
129
|
#[cfg(test)]
|
@@ -125,7 +140,7 @@ mod tests {
|
|
125
140
|
let literal = "ab";
|
126
141
|
assert!(literal.len() < MIN_FUZZY_LEN);
|
127
142
|
let query = [Token::Literal(literal.into())];
|
128
|
-
let fuzzy = parse_fuzzy_query(&query, term_collector.clone(), false);
|
143
|
+
let fuzzy = parse_fuzzy_query(&query, term_collector.clone(), false).unwrap();
|
129
144
|
assert!(fuzzy.is::<TermQuery>());
|
130
145
|
let q = fuzzy.downcast::<TermQuery>().unwrap();
|
131
146
|
assert_eq!(q.term().value().as_str(), Some(literal));
|
@@ -138,7 +153,7 @@ mod tests {
|
|
138
153
|
let literal = "abcd";
|
139
154
|
assert!(literal.len() >= MIN_FUZZY_LEN);
|
140
155
|
let query = [Token::Literal(literal.into())];
|
141
|
-
let fuzzy = parse_fuzzy_query(&query, term_collector.clone(), false);
|
156
|
+
let fuzzy = parse_fuzzy_query(&query, term_collector.clone(), false).unwrap();
|
142
157
|
assert!(fuzzy.is::<FuzzyTermQuery>());
|
143
158
|
assert!(!fuzzy.downcast::<FuzzyTermQuery>().unwrap().is_prefix());
|
144
159
|
}
|
@@ -154,18 +169,18 @@ mod tests {
|
|
154
169
|
assert!(literal.len() >= MIN_FUZZY_PREFIX_LEN);
|
155
170
|
let query = [Token::Literal(literal.into())];
|
156
171
|
|
157
|
-
let fuzzy = parse_fuzzy_query(&query, term_collector.clone(), false);
|
172
|
+
let fuzzy = parse_fuzzy_query(&query, term_collector.clone(), false).unwrap();
|
158
173
|
assert!(fuzzy.is::<FuzzyTermQuery>());
|
159
174
|
assert!(!fuzzy.downcast::<FuzzyTermQuery>().unwrap().is_prefix());
|
160
175
|
|
161
|
-
let fuzzy = parse_fuzzy_query(&query, term_collector.clone(), true);
|
176
|
+
let fuzzy = parse_fuzzy_query(&query, term_collector.clone(), true).unwrap();
|
162
177
|
assert!(fuzzy.is::<FuzzyTermQuery>());
|
163
178
|
assert!(fuzzy.downcast::<FuzzyTermQuery>().unwrap().is_prefix());
|
164
179
|
|
165
180
|
// only the last term is fuzzy prefix
|
166
181
|
|
167
182
|
let query = [Token::Literal(literal.into()), Token::Literal(literal.into())];
|
168
|
-
let fuzzy = parse_fuzzy_query(&query, term_collector.clone(), true);
|
183
|
+
let fuzzy = parse_fuzzy_query(&query, term_collector.clone(), true).unwrap();
|
169
184
|
assert!(fuzzy.is::<BooleanQuery>());
|
170
185
|
let q = fuzzy.downcast::<BooleanQuery>().unwrap();
|
171
186
|
let clauses = q.clauses();
|
@@ -181,11 +196,11 @@ mod tests {
|
|
181
196
|
assert!(literal.len() < MIN_FUZZY_PREFIX_LEN);
|
182
197
|
let query = [Token::Literal(literal.into())];
|
183
198
|
|
184
|
-
let fuzzy = parse_fuzzy_query(&query, term_collector.clone(), false);
|
199
|
+
let fuzzy = parse_fuzzy_query(&query, term_collector.clone(), false).unwrap();
|
185
200
|
assert!(fuzzy.is::<FuzzyTermQuery>());
|
186
201
|
assert!(!fuzzy.downcast::<FuzzyTermQuery>().unwrap().is_prefix());
|
187
202
|
|
188
|
-
let fuzzy = parse_fuzzy_query(&query, term_collector.clone(), true);
|
203
|
+
let fuzzy = parse_fuzzy_query(&query, term_collector.clone(), true).unwrap();
|
189
204
|
assert!(fuzzy.is::<FuzzyTermQuery>());
|
190
205
|
assert!(!fuzzy.downcast::<FuzzyTermQuery>().unwrap().is_prefix());
|
191
206
|
}
|
@@ -18,18 +18,22 @@
|
|
18
18
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
19
|
//
|
20
20
|
use tantivy::Term;
|
21
|
-
use tantivy::query::{AllQuery, BooleanQuery,
|
21
|
+
use tantivy::query::{AllQuery, BooleanQuery, Occur, PhraseQuery, Query, TermQuery};
|
22
22
|
use tantivy::schema::IndexRecordOption;
|
23
|
-
use tracing::error;
|
24
23
|
|
25
24
|
use crate::ParagraphSchema;
|
26
25
|
|
26
|
+
use super::FallbackQuery;
|
27
27
|
use super::tokenizer::Token;
|
28
28
|
|
29
29
|
/// Convert a tokenized query into a tantivy keyword query
|
30
30
|
///
|
31
31
|
/// Empty queries will match everything.
|
32
|
-
pub fn parse_keyword_query<'a>(
|
32
|
+
pub fn parse_keyword_query<'a>(
|
33
|
+
query: &'a [Token<'a>],
|
34
|
+
schema: &ParagraphSchema,
|
35
|
+
) -> Result<Box<dyn Query>, FallbackQuery> {
|
36
|
+
let mut errors = vec![];
|
33
37
|
let mut subqueries = vec![];
|
34
38
|
for item in query {
|
35
39
|
match item {
|
@@ -37,10 +41,10 @@ pub fn parse_keyword_query<'a>(query: &'a [Token<'a>], schema: &ParagraphSchema)
|
|
37
41
|
let q = parse_literal(schema, literal);
|
38
42
|
subqueries.push((Occur::Should, q));
|
39
43
|
}
|
40
|
-
Token::Quoted(quoted) => {
|
41
|
-
|
42
|
-
|
43
|
-
}
|
44
|
+
Token::Quoted(quoted) => match parse_quoted(schema, quoted) {
|
45
|
+
Ok(q) => subqueries.push((Occur::Should, q)),
|
46
|
+
Err(error) => errors.push(error),
|
47
|
+
},
|
44
48
|
Token::Excluded(excluded) => {
|
45
49
|
let q = parse_excluded(schema, excluded);
|
46
50
|
subqueries.push((Occur::Should, q));
|
@@ -48,13 +52,15 @@ pub fn parse_keyword_query<'a>(query: &'a [Token<'a>], schema: &ParagraphSchema)
|
|
48
52
|
}
|
49
53
|
}
|
50
54
|
|
51
|
-
if subqueries.is_empty() {
|
55
|
+
let q = if subqueries.is_empty() {
|
52
56
|
Box::new(AllQuery)
|
53
57
|
} else if subqueries.len() == 1 {
|
54
58
|
subqueries.pop().unwrap().1
|
55
59
|
} else {
|
56
60
|
Box::new(BooleanQuery::new(subqueries))
|
57
|
-
}
|
61
|
+
};
|
62
|
+
|
63
|
+
if errors.is_empty() { Ok(q) } else { Err((q, errors)) }
|
58
64
|
}
|
59
65
|
|
60
66
|
#[inline]
|
@@ -65,7 +71,7 @@ pub fn parse_literal(schema: &ParagraphSchema, literal: &str) -> Box<dyn Query>
|
|
65
71
|
))
|
66
72
|
}
|
67
73
|
|
68
|
-
pub fn parse_quoted(schema: &ParagraphSchema, quoted: &str) -> Box<dyn Query> {
|
74
|
+
pub fn parse_quoted(schema: &ParagraphSchema, quoted: &str) -> Result<Box<dyn Query>, String> {
|
69
75
|
let mut terms: Vec<Term> = quoted
|
70
76
|
.split_whitespace()
|
71
77
|
.map(|word| Term::from_field_text(schema.text, word))
|
@@ -75,18 +81,18 @@ pub fn parse_quoted(schema: &ParagraphSchema, quoted: &str) -> Box<dyn Query> {
|
|
75
81
|
if terms.len() == 1 {
|
76
82
|
// phrase queries must have more than one term, so we use a term query
|
77
83
|
let term = terms.remove(0); // safe because terms.len() == 1
|
78
|
-
Box::new(TermQuery::new(term, IndexRecordOption::Basic))
|
84
|
+
Ok(Box::new(TermQuery::new(term, IndexRecordOption::Basic)))
|
79
85
|
} else if terms.len() > 1 {
|
80
|
-
Box::new(PhraseQuery::new(terms))
|
86
|
+
Ok(Box::new(PhraseQuery::new(terms)))
|
81
87
|
} else {
|
88
|
+
#[cfg(not(test))] // we don't want an assert on tests, we want the error
|
82
89
|
debug_assert!(
|
83
90
|
false,
|
84
91
|
"Quoted content should have been validated to not only contain whitespaces"
|
85
92
|
);
|
86
|
-
// we return
|
93
|
+
// we return an error to protect us from tokenizer errors, but this branch should never
|
87
94
|
// happen
|
88
|
-
|
89
|
-
Box::new(EmptyQuery)
|
95
|
+
Err("Keyword tokenizer built a query with a only whitespaces Quoted token!".to_string())
|
90
96
|
}
|
91
97
|
}
|
92
98
|
|
@@ -111,7 +117,7 @@ mod tests {
|
|
111
117
|
#[test]
|
112
118
|
fn test_empty_query_is_all_query() {
|
113
119
|
let schema = ParagraphSchema::new();
|
114
|
-
let query = parse_keyword_query(&[], &schema);
|
120
|
+
let query = parse_keyword_query(&[], &schema).unwrap();
|
115
121
|
assert!(query.is::<AllQuery>());
|
116
122
|
}
|
117
123
|
|
@@ -119,7 +125,7 @@ mod tests {
|
|
119
125
|
fn test_one_clause_simplification() {
|
120
126
|
let schema = ParagraphSchema::new();
|
121
127
|
|
122
|
-
let query = parse_keyword_query(&[Token::Literal("nucliadb".into())], &schema);
|
128
|
+
let query = parse_keyword_query(&[Token::Literal("nucliadb".into())], &schema).unwrap();
|
123
129
|
let term = extract_term_from(&query);
|
124
130
|
assert_eq!(*term, Term::from_field_text(schema.text, "nucliadb"));
|
125
131
|
}
|
@@ -137,7 +143,7 @@ mod tests {
|
|
137
143
|
Token::Literal("with".into()),
|
138
144
|
Token::Quoted("superpowers".into()),
|
139
145
|
];
|
140
|
-
let r = downcast_boolean_query(parse_keyword_query(&query, &schema));
|
146
|
+
let r = downcast_boolean_query(parse_keyword_query(&query, &schema).unwrap());
|
141
147
|
let clauses = r.clauses();
|
142
148
|
assert_eq!(clauses.len(), 6);
|
143
149
|
|
@@ -188,6 +194,19 @@ mod tests {
|
|
188
194
|
assert_eq!(*term, Term::from_field_text(schema.text, "superpowers"));
|
189
195
|
}
|
190
196
|
|
197
|
+
#[test]
|
198
|
+
/// The tokenizer should not allow an empty (whitespaces) Quoted token
|
199
|
+
fn test_parse_quoted_error() {
|
200
|
+
let schema = ParagraphSchema::new();
|
201
|
+
|
202
|
+
let quoted = " ";
|
203
|
+
let r = parse_quoted(&schema, quoted);
|
204
|
+
assert!(r.is_err());
|
205
|
+
|
206
|
+
let r = parse_keyword_query(&[Token::Quoted(" ".into())], &schema);
|
207
|
+
assert!(r.is_err());
|
208
|
+
}
|
209
|
+
|
191
210
|
fn downcast_boolean_query(q: Box<dyn Query>) -> Box<BooleanQuery> {
|
192
211
|
let q = q.downcast::<BooleanQuery>();
|
193
212
|
assert!(q.is_ok(), "BooleanQuery expected");
|
@@ -165,7 +165,14 @@ fn tantivy_retokenize(tokens: Vec<Token>) -> Vec<Token> {
|
|
165
165
|
let token = stream.token();
|
166
166
|
tokens.push(token.text.clone())
|
167
167
|
}
|
168
|
-
|
168
|
+
let text = tokens.into_iter().join(" ");
|
169
|
+
// as with the nom tokenizer, empty quotes make no sense so we
|
170
|
+
// get rid of them
|
171
|
+
if !text.is_empty() {
|
172
|
+
vec![Token::Quoted(Cow::Owned(text))]
|
173
|
+
} else {
|
174
|
+
vec![]
|
175
|
+
}
|
169
176
|
}
|
170
177
|
Token::Excluded(Cow::Borrowed(excluded)) => {
|
171
178
|
let mut stream = tantivy_tokenizer.token_stream(excluded);
|
@@ -331,6 +338,12 @@ mod tests {
|
|
331
338
|
];
|
332
339
|
let tokens = tokenize_query_infallible(query);
|
333
340
|
assert_eq!(tokens, expected);
|
341
|
+
|
342
|
+
// quoted strings with special characters that tantivy tokenizer removes are removed
|
343
|
+
let query = r#"tantivy deletes "...""#;
|
344
|
+
let expected = vec![Literal("tantivy".into()), Literal("deletes".into())];
|
345
|
+
let tokens = tokenize_query_infallible(query);
|
346
|
+
assert_eq!(tokens, expected);
|
334
347
|
}
|
335
348
|
|
336
349
|
#[test]
|
{nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/query_parser.rs
RENAMED
@@ -24,6 +24,7 @@ mod tokenizer;
|
|
24
24
|
|
25
25
|
use tantivy::query::Query;
|
26
26
|
use tokenizer::{Token, tokenize_query_infallible};
|
27
|
+
use tracing::error;
|
27
28
|
|
28
29
|
use crate::{
|
29
30
|
schema::ParagraphSchema,
|
@@ -33,6 +34,10 @@ use crate::{
|
|
33
34
|
pub use fuzzy_parser::FUZZY_DISTANCE;
|
34
35
|
use stop_words::remove_stop_words;
|
35
36
|
|
37
|
+
/// Alias to make clippy happier. A FallbackQuery is no more than a query with a list of errors
|
38
|
+
/// found while parsing
|
39
|
+
pub type FallbackQuery = (Box<dyn Query>, Vec<String>);
|
40
|
+
|
36
41
|
/// `Parser` is the nidx keyword grammar query parser
|
37
42
|
///
|
38
43
|
/// It allows some behavior configuration and query parsing capabilities. Query
|
@@ -82,12 +87,29 @@ impl<'a> Parser<'a> {
|
|
82
87
|
}
|
83
88
|
let shared_term_collector = SharedTermC::from(term_collector);
|
84
89
|
|
85
|
-
let keyword = keyword_parser::parse_keyword_query(&tokenized, self.schema)
|
86
|
-
|
90
|
+
let keyword = match keyword_parser::parse_keyword_query(&tokenized, self.schema) {
|
91
|
+
Ok(q) => q,
|
92
|
+
Err((q, errors)) => {
|
93
|
+
for err in errors {
|
94
|
+
error!(?query, parser = "keyword", err);
|
95
|
+
}
|
96
|
+
q
|
97
|
+
}
|
98
|
+
};
|
99
|
+
|
100
|
+
let fuzzy = match fuzzy_parser::parse_fuzzy_query(
|
87
101
|
&tokenized,
|
88
102
|
shared_term_collector.clone(),
|
89
103
|
self.last_fuzzy_term_as_prefix,
|
90
|
-
)
|
104
|
+
) {
|
105
|
+
Ok(q) => q,
|
106
|
+
Err((q, errors)) => {
|
107
|
+
for err in errors {
|
108
|
+
error!(?query, parser = "fuzzy", err);
|
109
|
+
}
|
110
|
+
q
|
111
|
+
}
|
112
|
+
};
|
91
113
|
|
92
114
|
ParsedQuery {
|
93
115
|
keyword,
|
@@ -115,6 +137,16 @@ mod tests {
|
|
115
137
|
// keeps last term even if is a stop word
|
116
138
|
"nuclia database the",
|
117
139
|
),
|
140
|
+
(
|
141
|
+
"nuclia \"is\" a database for the",
|
142
|
+
// keeps last term even if is a stop word
|
143
|
+
"nuclia \"is\" database the",
|
144
|
+
),
|
145
|
+
(
|
146
|
+
"nuclia \"...\" a database for the",
|
147
|
+
// keeps last term even if is a stop word
|
148
|
+
"nuclia database the",
|
149
|
+
),
|
118
150
|
("is a for and", "and"),
|
119
151
|
("what does stop is?", "stop is"),
|
120
152
|
("", ""),
|
@@ -10,7 +10,7 @@ build-backend = "pdm.backend"
|
|
10
10
|
|
11
11
|
[project]
|
12
12
|
name = "nidx_protos"
|
13
|
-
version = "6.7.2.
|
13
|
+
version = "6.7.2.post495"
|
14
14
|
license = "AGPL-3.0-or-later"
|
15
15
|
description = "Protobuf definitions for nucliadb/nidx"
|
16
16
|
authors = [{ name = "Nuclia", email = "nucliadb@nuclia.com" }]
|
@@ -13,7 +13,7 @@ classifiers = [
|
|
13
13
|
"Programming Language :: Python :: Implementation :: CPython",
|
14
14
|
"Programming Language :: Python :: Implementation :: PyPy",
|
15
15
|
]
|
16
|
-
version = "6.7.2.
|
16
|
+
version = "6.7.2.post495"
|
17
17
|
|
18
18
|
[project.urls]
|
19
19
|
Homepage = "https://nuclia.com"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/migrations/20241007163501_initial.sql
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/request_types.rs
RENAMED
File without changes
|
{nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/resource_indexer.rs
RENAMED
File without changes
|
File without changes
|
{nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/search_query.rs
RENAMED
File without changes
|
{nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/src/search_response.rs
RENAMED
File without changes
|
File without changes
|
{nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/README.md
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{nidx_binding-6.7.2.post490 → nidx_binding-6.7.2.post495}/nidx_paragraph/stop_words/extract.py
RENAMED
File without changes
|