mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-01-18 08:48:32 +08:00
Show both database and documents database sizes
This commit is contained in:
parent
a4e0f3f724
commit
883a8109c8
@ -63,5 +63,8 @@ $('#docs-count').text(function(index, text) {
|
|||||||
|
|
||||||
// Make the database a little bit easier to read
|
// Make the database a little bit easier to read
|
||||||
$('#db-size').text(function(index, text) {
|
$('#db-size').text(function(index, text) {
|
||||||
return filesize(parseInt(text))
|
let arr = text.split("+");
|
||||||
|
let database_size = filesize(parseInt(arr[0]));
|
||||||
|
let documents_size = filesize(parseInt(arr[1]));
|
||||||
|
return `${database_size} + ${documents_size}`
|
||||||
});
|
});
|
||||||
|
@ -62,6 +62,7 @@ fn highlight_string(string: &str, words: &HashSet<String>) -> String {
|
|||||||
struct IndexTemplate {
|
struct IndexTemplate {
|
||||||
db_name: String,
|
db_name: String,
|
||||||
db_size: usize,
|
db_size: usize,
|
||||||
|
docs_size: usize,
|
||||||
docs_count: usize,
|
docs_count: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,6 +89,7 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
// the disk file size and the number of documents in the database.
|
// the disk file size and the number of documents in the database.
|
||||||
let db_name = opt.database.file_stem().and_then(|s| s.to_str()).unwrap_or("").to_string();
|
let db_name = opt.database.file_stem().and_then(|s| s.to_str()).unwrap_or("").to_string();
|
||||||
let db_size = File::open(opt.database.join("data.mdb"))?.metadata()?.len() as usize;
|
let db_size = File::open(opt.database.join("data.mdb"))?.metadata()?.len() as usize;
|
||||||
|
let docs_size = File::open(opt.database.join("documents.mtbl"))?.metadata()?.len() as usize;
|
||||||
let docs_count = index.number_of_documents();
|
let docs_count = index.number_of_documents();
|
||||||
|
|
||||||
// We run and wait on the HTTP server
|
// We run and wait on the HTTP server
|
||||||
@ -99,6 +101,7 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
IndexTemplate {
|
IndexTemplate {
|
||||||
db_name: db_name.clone(),
|
db_name: db_name.clone(),
|
||||||
db_size,
|
db_size,
|
||||||
|
docs_size,
|
||||||
docs_count: docs_count as usize,
|
docs_count: docs_count as usize,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -185,9 +185,9 @@ impl Index {
|
|||||||
let mut stream = fst.search(&dfa).into_stream();
|
let mut stream = fst.search(&dfa).into_stream();
|
||||||
while let Some(word) = stream.next() {
|
while let Some(word) = stream.next() {
|
||||||
let word = std::str::from_utf8(word)?;
|
let word = std::str::from_utf8(word)?;
|
||||||
if let Some(right) = self.word_positions.get(rtxn, word)? {
|
if let Some(positions) = self.word_positions.get(rtxn, word)? {
|
||||||
union_positions.union_with(&right);
|
union_positions.union_with(&positions);
|
||||||
derived_words.push((word.as_bytes().to_vec(), right));
|
derived_words.push((word.as_bytes().to_vec(), positions));
|
||||||
count += 1;
|
count += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -206,7 +206,7 @@ impl Index {
|
|||||||
let number_of_attributes = self.number_of_attributes(rtxn)?.map_or(0, |n| n as u32);
|
let number_of_attributes = self.number_of_attributes(rtxn)?.map_or(0, |n| n as u32);
|
||||||
for (i, derived_words) in words.iter().enumerate() {
|
for (i, derived_words) in words.iter().enumerate() {
|
||||||
let mut union_docids = RoaringBitmap::new();
|
let mut union_docids = RoaringBitmap::new();
|
||||||
for (word, _) in derived_words {
|
for (word, _positions) in derived_words {
|
||||||
for attr in 0..number_of_attributes {
|
for attr in 0..number_of_attributes {
|
||||||
let mut key = word.to_vec();
|
let mut key = word.to_vec();
|
||||||
key.extend_from_slice(&attr.to_be_bytes());
|
key.extend_from_slice(&attr.to_be_bytes());
|
||||||
|
@ -81,11 +81,10 @@ impl<'a> Iterator for QueryTokens<'a> {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use QueryToken::{Quoted, Free};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn one_quoted_string() {
|
fn one_quoted_string() {
|
||||||
use QueryToken::Quoted;
|
|
||||||
|
|
||||||
let mut iter = QueryTokens::new("\"hello\"");
|
let mut iter = QueryTokens::new("\"hello\"");
|
||||||
assert_eq!(iter.next(), Some(Quoted("hello")));
|
assert_eq!(iter.next(), Some(Quoted("hello")));
|
||||||
assert_eq!(iter.next(), None);
|
assert_eq!(iter.next(), None);
|
||||||
@ -93,8 +92,6 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn one_pending_quoted_string() {
|
fn one_pending_quoted_string() {
|
||||||
use QueryToken::Quoted;
|
|
||||||
|
|
||||||
let mut iter = QueryTokens::new("\"hello");
|
let mut iter = QueryTokens::new("\"hello");
|
||||||
assert_eq!(iter.next(), Some(Quoted("hello")));
|
assert_eq!(iter.next(), Some(Quoted("hello")));
|
||||||
assert_eq!(iter.next(), None);
|
assert_eq!(iter.next(), None);
|
||||||
@ -102,8 +99,6 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn one_non_quoted_string() {
|
fn one_non_quoted_string() {
|
||||||
use QueryToken::Free;
|
|
||||||
|
|
||||||
let mut iter = QueryTokens::new("hello");
|
let mut iter = QueryTokens::new("hello");
|
||||||
assert_eq!(iter.next(), Some(Free("hello")));
|
assert_eq!(iter.next(), Some(Free("hello")));
|
||||||
assert_eq!(iter.next(), None);
|
assert_eq!(iter.next(), None);
|
||||||
@ -111,8 +106,6 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn quoted_directly_followed_by_free_strings() {
|
fn quoted_directly_followed_by_free_strings() {
|
||||||
use QueryToken::{Quoted, Free};
|
|
||||||
|
|
||||||
let mut iter = QueryTokens::new("\"hello\"world");
|
let mut iter = QueryTokens::new("\"hello\"world");
|
||||||
assert_eq!(iter.next(), Some(Quoted("hello")));
|
assert_eq!(iter.next(), Some(Quoted("hello")));
|
||||||
assert_eq!(iter.next(), Some(Free("world")));
|
assert_eq!(iter.next(), Some(Free("world")));
|
||||||
@ -121,8 +114,6 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn free_directly_followed_by_quoted_strings() {
|
fn free_directly_followed_by_quoted_strings() {
|
||||||
use QueryToken::{Quoted, Free};
|
|
||||||
|
|
||||||
let mut iter = QueryTokens::new("hello\"world\"");
|
let mut iter = QueryTokens::new("hello\"world\"");
|
||||||
assert_eq!(iter.next(), Some(Free("hello")));
|
assert_eq!(iter.next(), Some(Free("hello")));
|
||||||
assert_eq!(iter.next(), Some(Quoted("world")));
|
assert_eq!(iter.next(), Some(Quoted("world")));
|
||||||
@ -131,8 +122,6 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn free_followed_by_quoted_strings() {
|
fn free_followed_by_quoted_strings() {
|
||||||
use QueryToken::{Quoted, Free};
|
|
||||||
|
|
||||||
let mut iter = QueryTokens::new("hello \"world\"");
|
let mut iter = QueryTokens::new("hello \"world\"");
|
||||||
assert_eq!(iter.next(), Some(Free("hello")));
|
assert_eq!(iter.next(), Some(Free("hello")));
|
||||||
assert_eq!(iter.next(), Some(Quoted("world")));
|
assert_eq!(iter.next(), Some(Quoted("world")));
|
||||||
@ -141,8 +130,6 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn multiple_spaces_separated_strings() {
|
fn multiple_spaces_separated_strings() {
|
||||||
use QueryToken::Free;
|
|
||||||
|
|
||||||
let mut iter = QueryTokens::new("hello world ");
|
let mut iter = QueryTokens::new("hello world ");
|
||||||
assert_eq!(iter.next(), Some(Free("hello")));
|
assert_eq!(iter.next(), Some(Free("hello")));
|
||||||
assert_eq!(iter.next(), Some(Free("world")));
|
assert_eq!(iter.next(), Some(Free("world")));
|
||||||
@ -151,8 +138,6 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn multi_interleaved_quoted_free_strings() {
|
fn multi_interleaved_quoted_free_strings() {
|
||||||
use QueryToken::{Quoted, Free};
|
|
||||||
|
|
||||||
let mut iter = QueryTokens::new("hello \"world\" coucou \"monde\"");
|
let mut iter = QueryTokens::new("hello \"world\" coucou \"monde\"");
|
||||||
assert_eq!(iter.next(), Some(Free("hello")));
|
assert_eq!(iter.next(), Some(Free("hello")));
|
||||||
assert_eq!(iter.next(), Some(Quoted("world")));
|
assert_eq!(iter.next(), Some(Quoted("world")));
|
||||||
@ -160,4 +145,13 @@ mod tests {
|
|||||||
assert_eq!(iter.next(), Some(Quoted("monde")));
|
assert_eq!(iter.next(), Some(Quoted("monde")));
|
||||||
assert_eq!(iter.next(), None);
|
assert_eq!(iter.next(), None);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn multi_quoted_strings() {
|
||||||
|
let mut iter = QueryTokens::new("\"hello world\" coucou \"monde est beau\"");
|
||||||
|
assert_eq!(iter.next(), Some(Quoted("hello world")));
|
||||||
|
assert_eq!(iter.next(), Some(Free("coucou")));
|
||||||
|
assert_eq!(iter.next(), Some(Quoted("monde est beau")));
|
||||||
|
assert_eq!(iter.next(), None);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
<div class="level-item has-text-centered">
|
<div class="level-item has-text-centered">
|
||||||
<div>
|
<div>
|
||||||
<p class="heading">Database Size</p>
|
<p class="heading">Database Size</p>
|
||||||
<p class="title" id="db-size">{{ db_size }}</p>
|
<p class="title" id="db-size">{{ db_size }} + {{ docs_size }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="level-item has-text-centered">
|
<div class="level-item has-text-centered">
|
||||||
|
Loading…
Reference in New Issue
Block a user