-
-
Notifications
You must be signed in to change notification settings - Fork 671
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
14 changed files
with
150 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
use std::path::PathBuf; | ||
|
||
use schema::*; | ||
|
||
use crate::*; | ||
|
||
fn create_index(path: &str) { | ||
let mut schema_builder = Schema::builder(); | ||
let label = schema_builder.add_text_field("label", TEXT | STORED); | ||
let date = schema_builder.add_date_field("date", INDEXED | STORED); | ||
let schema = schema_builder.build(); | ||
std::fs::create_dir_all(path).unwrap(); | ||
let index = Index::create_in_dir(path, schema).unwrap(); | ||
let mut index_writer = index.writer_with_num_threads(1, 20_000_000).unwrap(); | ||
index_writer | ||
.add_document(doc!(label => "dateformat", date => DateTime::from_timestamp_nanos(123456))) | ||
.unwrap(); | ||
index_writer.commit().unwrap(); | ||
} | ||
|
||
#[test] | ||
/// Writes an Index for the current INDEX_FORMAT_VERSION to disk. | ||
fn create_format() { | ||
let version = INDEX_FORMAT_VERSION.to_string(); | ||
let file_path = path_for_version(&version); | ||
if PathBuf::from(file_path.clone()).exists() { | ||
return; | ||
} | ||
create_index(&file_path); | ||
} | ||
|
||
fn path_for_version(version: &str) -> String { | ||
format!("./tests/compat_tests_data/index_v{}/", version) | ||
} | ||
|
||
/// feature flag quickwit uses a different dictionary type | ||
#[test] | ||
#[cfg(not(feature = "quickwit"))] | ||
fn test_format_6() { | ||
let path = path_for_version("6"); | ||
|
||
let index = Index::open_in_dir(path).expect("Failed to open index"); | ||
// dates are truncated to Microseconds in v6 | ||
assert_date_time_precision(&index, DateTimePrecision::Microseconds); | ||
} | ||
|
||
#[cfg(not(feature = "quickwit"))] | ||
fn assert_date_time_precision(index: &Index, precision: DateTimePrecision) { | ||
use collector::TopDocs; | ||
let reader = index.reader().expect("Failed to create reader"); | ||
let searcher = reader.searcher(); | ||
|
||
let schema = index.schema(); | ||
let label_field = schema.get_field("label").expect("Field 'label' not found"); | ||
let query_parser = query::QueryParser::for_index(index, vec![label_field]); | ||
|
||
let query = query_parser | ||
.parse_query("dateformat") | ||
.expect("Failed to parse query"); | ||
let top_docs = searcher | ||
.search(&query, &TopDocs::with_limit(1)) | ||
.expect("Search failed"); | ||
|
||
assert_eq!(top_docs.len(), 1, "Expected 1 search result"); | ||
|
||
let doc_address = top_docs[0].1; | ||
let retrieved_doc: TantivyDocument = searcher | ||
.doc(doc_address) | ||
.expect("Failed to retrieve document"); | ||
|
||
let date_field = schema.get_field("date").expect("Field 'date' not found"); | ||
let date_value = retrieved_doc | ||
.get_first(date_field) | ||
.expect("Date field not found in document") | ||
.as_datetime() | ||
.unwrap(); | ||
|
||
let expected = DateTime::from_timestamp_nanos(123456).truncate(precision); | ||
assert_eq!(date_value, expected,); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
["00000000000000000000000000000000.store","00000000000000000000000000000000.fast","00000000000000000000000000000000.fieldnorm","00000000000000000000000000000000.term","00000000000000000000000000000000.idx","meta.json","00000000000000000000000000000000.pos"] |
Empty file.
Empty file.
Binary file added
BIN
+146 Bytes
tests/compat_tests_data/index_v6/00000000000000000000000000000000.fast
Binary file not shown.
Binary file added
BIN
+113 Bytes
tests/compat_tests_data/index_v6/00000000000000000000000000000000.fieldnorm
Binary file not shown.
Binary file added
BIN
+130 Bytes
tests/compat_tests_data/index_v6/00000000000000000000000000000000.idx
Binary file not shown.
Binary file added
BIN
+112 Bytes
tests/compat_tests_data/index_v6/00000000000000000000000000000000.pos
Binary file not shown.
Binary file added
BIN
+170 Bytes
tests/compat_tests_data/index_v6/00000000000000000000000000000000.store
Binary file not shown.
Binary file added
BIN
+349 Bytes
tests/compat_tests_data/index_v6/00000000000000000000000000000000.term
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
{ | ||
"index_settings": { | ||
"docstore_compression": "lz4", | ||
"docstore_blocksize": 16384 | ||
}, | ||
"segments": [ | ||
{ | ||
"segment_id": "00000000-0000-0000-0000-000000000000", | ||
"max_doc": 1, | ||
"deletes": null | ||
} | ||
], | ||
"schema": [ | ||
{ | ||
"name": "label", | ||
"type": "text", | ||
"options": { | ||
"indexing": { | ||
"record": "position", | ||
"fieldnorms": true, | ||
"tokenizer": "default" | ||
}, | ||
"stored": true, | ||
"fast": false | ||
} | ||
}, | ||
{ | ||
"name": "date", | ||
"type": "date", | ||
"options": { | ||
"indexed": true, | ||
"fieldnorms": true, | ||
"fast": false, | ||
"stored": true, | ||
"precision": "seconds" | ||
} | ||
} | ||
], | ||
"opstamp": 2 | ||
} |