387 Commits

Author SHA1 Message Date
Clément Renault
fc686aaca7
Use the De Morgan law to simplify the NOT operation 2020-11-23 16:43:56 +01:00
Clément Renault
7370ef8c5e
Add two simple test to the facet FacetCondition struct construction 2020-11-23 16:43:56 +01:00
Clément Renault
fc242f6e1f
Rewrite the FacetCondtion Debug impl in a defensive way 2020-11-23 16:43:56 +01:00
Clément Renault
a0adfb5e8e
Introduce a real pest parser and support every facet filter conditions 2020-11-23 16:43:55 +01:00
Clément Renault
c52d09d5b1
Support a basic version of the string facet query system 2020-11-23 16:43:55 +01:00
Clément Renault
498f0d8539
Output the documents count for each facet value in the infos subcommand 2020-11-23 16:43:55 +01:00
Clément Renault
278391d961
Move the facets related system into the new search module 2020-11-23 16:43:54 +01:00
Clément Renault
531bd6ddc7
Make the facet operator evaluation code generic 2020-11-23 16:43:54 +01:00
Clément Renault
d40dd3e4da
Reduce the amount of duplicated code to iterate over facet values 2020-11-23 16:43:54 +01:00
Clément Renault
07a0c82790
Bump heed to 0.10.4 to use be able to lazily decode roaring bitmaps 2020-11-23 16:43:53 +01:00
Clément Renault
59ca4b9fe4
Introduce a little bit of debug when deleting documents 2020-11-23 16:43:53 +01:00
Clément Renault
0694cc4916
Drastically speed up documents deletion updates 2020-11-23 16:43:53 +01:00
Clément Renault
38c76754ef
Make the facet level search system generic on f64 and i64 2020-11-23 16:43:52 +01:00
Clément Renault
9e2cbe3362
Improve the FacetLevelF64 serialization 2020-11-23 16:43:52 +01:00
Clément Renault
ced0c29c56
Simplify getting the biggest level of a facet field 2020-11-23 16:43:52 +01:00
Kerollmops
7d67c9e2e7
Improve the facet search algorithm performances 2020-11-23 16:43:52 +01:00
Clément Renault
67d4a1b3fc
Introduce a new update for the facet levels 2020-11-23 16:43:51 +01:00
Clément Renault
45e0feab4e
Speed up the facets stats infos subcommand 2020-11-23 16:43:51 +01:00
Kerollmops
7a6e6eb5e2
Introduce a facets stats infos subcommand 2020-11-23 16:43:51 +01:00
Clément Renault
9ec95679e1
Introduce a function to retrieve the facet level range docids 2020-11-23 16:43:50 +01:00
Clément Renault
57d253aeda
Improve the infos biggest-value subcommand to support facets 2020-11-23 16:43:50 +01:00
Clément Renault
fd8360deb1
Update the facet indexing facet test 2020-11-23 16:43:50 +01:00
Clément Renault
9b7e516a56
Fix the indexing process going back in time 2020-11-23 16:43:49 +01:00
Clément Renault
2341b99379
Support a basic facet based query system 2020-11-23 16:43:49 +01:00
Clément Renault
05c95dfdc6
Introduce an infos subcommand that patches the external documents ids 2020-11-22 19:27:34 +01:00
Clément Renault
27f3ef5f7a
Use the new ExternalDocumentsIds struct in the engine 2020-11-22 19:27:34 +01:00
Clément Renault
fe82516f9f
Use the ExternalDocumentsIds in the Index struct 2020-11-22 19:27:34 +01:00
Clément Renault
415c0b86ba
Introduce the ExternalDocumentsIds struct 2020-11-22 19:27:33 +01:00
Clément Renault
eded5558b2
Rename the users ids documents ids into external documents ids 2020-11-22 17:17:47 +01:00
Clément Renault
f06355b0bb
Display the time it takes to merge user documents ids 2020-11-22 11:28:35 +01:00
Clément Renault
e76558b0cc
Change the settings update system to reindex only one time 2020-11-14 11:17:49 +01:00
Clément Renault
f9cc12ae0f
Do not try to parse empty faceted strings 2020-11-13 18:35:47 +01:00
Clément Renault
8e6efe4d87
Introduce an infos subcommand to display the facet values 2020-11-13 18:35:47 +01:00
Clément Renault
a18d9a1f87
Parse and store the faceted fields 2020-11-13 16:13:51 +01:00
Clément Renault
4e5e55c21a
Simplify the merge functions 2020-11-13 14:50:30 +01:00
Clément Renault
8ae9888959
Store the field id instead of the field name in the facets database 2020-11-13 14:50:30 +01:00
Clément Renault
cf9ddd293d
Simplify the the facet types 2020-11-13 11:46:48 +01:00
Clément Renault
466fb601d6
Faceted fields settings must specify the facet type 2020-11-13 11:46:48 +01:00
Clément Renault
ebe7087bff
Introduce the faceted fields setting 2020-11-11 17:08:18 +01:00
Clément Renault
72f18759ba
Introduce getters and setters for the facet fields ids facet types 2020-11-11 16:26:22 +01:00
Clément Renault
92ec908303
Introduce the facet field id values engine database 2020-11-11 16:06:33 +01:00
Clément Renault
e0058c1125
Introduce codecs for facet types (string, f64, u64, i64) 2020-11-11 15:48:24 +01:00
Clément Renault
ea43080548
Make the indexing process send the new progress step events 2020-11-11 13:13:08 +01:00
Clément Renault
e78b96a657
Introduce a more detailed progress status enum 2020-11-11 12:31:59 +01:00
Clément Renault
535f8088d7
Write the words pairs proximities directly into LMDB to speedup indexing 2020-11-11 11:25:31 +01:00
Clément Renault
45ae086974
Make sure pending updates are process when restarting the UpdateStore 2020-11-09 17:33:07 +01:00
Clément Renault
4fb138c42e
Make sure we index all kind of JSON types 2020-11-06 16:35:07 +01:00
Clément Renault
c94bc59d7e
Introduce a function to transform an obk into a JSON 2020-11-05 13:57:29 +01:00
Clément Renault
0408c9d66a
Move the http server into its own sub-module 2020-11-05 11:16:39 +01:00
Clément Renault
a31db33e93
Introduce an optimization when the searchable attributes are ordered 2020-11-03 19:59:09 +01:00
Clément Renault
01c4f5abcd
Introduce the searchable attributes setting to the settings route 2020-11-03 19:35:55 +01:00
Clément Renault
63f65bac3e
Ignore the long running UpdateStore test 2020-11-03 19:12:00 +01:00
Clément Renault
a20c871ece
Add more tests to the Settings searchable attributes operation 2020-11-03 18:58:19 +01:00
Clément Renault
649fb6e401
Make sure that the indexing Store only index searchable fields 2020-11-03 18:58:19 +01:00
Clément Renault
e48630da72
Introduce the searchable parameter settings to the Settings update 2020-11-03 18:58:19 +01:00
Clément Renault
68d783145b
Introduce searchable fields methods on the index 2020-11-03 18:58:19 +01:00
Clément Renault
7e120fc441
Allow library users to specify the rayon ThreadPool for UpdateBuilder 2020-11-02 19:11:22 +01:00
Clément Renault
3d1854ab95
Introduce an HTTP route to accept settings changes 2020-11-02 15:47:21 +01:00
Clément Renault
995d72b8c1
Introduce the Settings update operation 2020-11-02 15:31:20 +01:00
Clément Renault
0c612f08c7
Rename the indexing warp routes 2020-11-02 15:30:29 +01:00
Clément Renault
9b08f48dbd
Construct the documents based on the displayed fields or fields ids order 2020-11-02 13:01:32 +01:00
Clément Renault
303c3ce89e
Clean up the heed imports in the index module 2020-11-02 12:49:54 +01:00
Clément Renault
8f56753a2f
Introduce displayed fields methods on the index 2020-11-02 12:49:54 +01:00
Clément Renault
3abfe8aa22
Validate documents ids before accepting them 2020-11-01 20:55:21 +01:00
Clément Renault
0ccf4cf785
Simplify the IndexDocuments builder creation from the UpdateBuilder 2020-11-01 17:31:20 +01:00
Clément Renault
600aa223c2
Fix a bug where generated docids were not saved when indexing JSON docs 2020-11-01 12:19:07 +01:00
Clément Renault
f0e63025b0
Update the Transform struct to support JSON stream updates 2020-11-01 12:19:06 +01:00
Kerollmops
6d52c5b2f0
Introduce a parameter to disable the engine to autogenerate docids 2020-10-31 21:46:55 +01:00
Clément Renault
21b4d60101
Add replace/update csv/json from the HTTP server 2020-10-31 20:52:49 +01:00
Clément Renault
a4f8be7811
Support numbers and boolean when indexing JSON 2020-10-31 20:52:49 +01:00
Clément Renault
f0d028d3a4
Update the Transform struct to support JSON updates 2020-10-31 20:52:49 +01:00
Clément Renault
9d47ee52b4
Generate a uuid v4 based document id when missing 2020-10-31 15:11:06 +01:00
Clément Renault
ddbd336387
Introduce primary key methods on the index 2020-10-31 11:50:59 +01:00
Clément Renault
0d01e4854b
Add a test to check that merging works correctly with CSVs 2020-10-30 13:46:56 +01:00
Clément Renault
955302fd95
Introduce an HTTP route to clear the documents 2020-10-30 13:12:55 +01:00
Clément Renault
7cc1a358f5
Fix a documents indexing bug and add a test 2020-10-30 12:14:25 +01:00
Clément Renault
99da69c85f
Introduce the prepare_for_closing Index method 2020-10-30 11:46:14 +01:00
Clément Renault
222063b19d
Introduce the Index path method 2020-10-30 11:46:00 +01:00
Clément Renault
085d3b9d94
Update heed to 0.10.0 2020-10-30 11:42:00 +01:00
Clément Renault
a30206a665
Prefer using iterator put_current instead of a get put method 2020-10-30 11:13:45 +01:00
Clément Renault
e63fdf2b22
Move the heed env into the index itself to ease the usage of the library 2020-10-30 10:56:35 +01:00
Clément Renault
b5d52b6b45
Prefer using a smallstr instead of a real String to reduce allocations 2020-10-29 14:32:32 +01:00
Clément Renault
40993a0d25
Fix an indexing process bug, where documents were not written in order 2020-10-29 14:20:03 +01:00
Clément Renault
855a251489
Enable the clear documents optimization that wasn't working due to a bug 2020-10-29 13:52:48 +01:00
Clément Renault
1228c2948d
Add a comment about the ClearDocuments operation in the DeleteDocuments 2020-10-28 11:17:36 +01:00
Kerollmops
d6338af766
Improve documents deletion by iterating over all the word pair positions 2020-10-27 18:50:09 +01:00
Clément Renault
3889d956d9
Introduce the UpdateBuilder and use it in the HTTP routes 2020-10-27 18:47:58 +01:00
Clément Renault
5c62fbb6a8
Move the IndexDocuments update into its own module 2020-10-26 12:21:13 +01:00
Clément Renault
8f76ec97c0
Move the DeleteDocuments update into its own module 2020-10-26 11:01:00 +01:00
Clément Renault
92ef1faa97
Move the ClearDocuments update into its own module 2020-10-26 10:58:17 +01:00
Clément Renault
1e1821f002
Introduce the merge_two_obkv function to merge documents on update 2020-10-26 10:55:07 +01:00
Clément Renault
60347a5483
Move the AvailableDocumentsIds iterator into the update module 2020-10-26 10:53:23 +01:00
Clément Renault
b14cca2ad9
Introduce the UpdateBuilder type along with some update operations 2020-10-25 18:32:01 +01:00
Clément Renault
adacc7977d
Make the Index return default values when value don't exist 2020-10-25 18:30:24 +01:00
Clément Renault
a7a4984175
Introduce the Transform type into the indexing system 2020-10-24 17:06:09 +02:00
Clément Renault
b44b04d25b
Serialize the CSV record values as JSON strings 2020-10-24 14:43:46 +02:00
Clément Renault
656a851830
Introduce the Transform struct transforming CSVs
This allows us to:
  - transform a CSV, a JSON or a JSON lines data type into the same
    Grenad x Obkv streamable data type and creates the new FieldsIdsMap.
  - Extract all the documents user ids in advance to be able to delete
    the existing documents before re-indexing them.
  - Keep the last documents with the same user id avoiding duplicates
    in the same request.
2020-10-24 13:37:38 +02:00
Clément Renault
8d82e37ec0
Introduce the AvailableDocumentsIds iterator 2020-10-23 12:07:01 +02:00
Clément Renault
2a4cd81c86
Add documentation to the Index methods 2020-10-22 15:44:12 +02:00
Clément Renault
566a7c3039
Make the FieldsIdsMap serialization more stable by using a BTreeMap 2020-10-22 14:53:20 +02:00