From 093c911ae1beae9a6b79c6e7738d8c156e6b4f5e Mon Sep 17 00:00:00 2001 From: ZzIsGod1019 <1498852723@qq.com> Date: Sat, 27 Jan 2024 22:54:04 +0800 Subject: [PATCH] spi-search: modify default value (#618) --- .../src/serv/pg/search_pg_item_serv.rs | 28 +++++++++---------- spi/spi-search/tests/config/conf-default.toml | 3 ++ spi/spi-search/tests/test_search.rs | 4 +-- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/spi/spi-search/src/serv/pg/search_pg_item_serv.rs b/spi/spi-search/src/serv/pg/search_pg_item_serv.rs index 422f69a57..3df918e15 100644 --- a/spi/spi-search/src/serv/pg/search_pg_item_serv.rs +++ b/spi/spi-search/src/serv/pg/search_pg_item_serv.rs @@ -2,15 +2,10 @@ use std::collections::{HashMap, HashSet}; use pinyin::{to_pinyin_vec, Pinyin}; use tardis::{ - basic::{dto::TardisContext, error::TardisError, result::TardisResult}, - chrono::Utc, - db::{ + basic::{dto::TardisContext, error::TardisError, result::TardisResult}, chrono::Utc, db::{ reldb_client::{TardisRelDBClient, TardisRelDBlConnection}, sea_orm::{FromQueryResult, Value}, - }, - serde_json::{self, json, Map}, - web::web_resp::TardisPage, - TardisFuns, TardisFunsInst, + }, log::info, serde_json::{self, json, Map}, web::web_resp::TardisPage, TardisFuns, TardisFunsInst }; use bios_basic::{basic_enumeration::BasicQueryOpKind, dto::BasicQueryCondInfo, helper::db_helper, spi::spi_funs::SpiBsInst}; @@ -27,11 +22,12 @@ const FUNCTION_EXT_SUFFIX_FLAG: &str = "_ext_"; const INNER_FIELD: [&str; 7] = ["key", "title", "content", "owner", "own_paths", "create_time", "update_time"]; pub async fn add(add_req: &mut SearchItemAddReq, funs: &TardisFunsInst, ctx: &TardisContext, inst: &SpiBsInst) -> TardisResult<()> { + info!("load SearchConfig: {:?}", funs.conf::().word_length); let mut params = Vec::new(); params.push(Value::from(add_req.kind.to_string())); params.push(Value::from(add_req.key.to_string())); params.push(Value::from(add_req.title.as_str())); - if add_req.title.chars().count() > funs.conf::().word_length.unwrap_or(15) { + if add_req.title.chars().count() > funs.conf::().word_length.unwrap_or(30) { params.push(Value::from(format!( "{} {}", add_req.title.as_str(), @@ -71,7 +67,7 @@ pub async fn add(add_req: &mut SearchItemAddReq, funs: &TardisFunsInst, ctx: &Ta let bs_inst = inst.inst::(); let (mut conn, table_name) = search_pg_initializer::init_table_and_conn(bs_inst, &add_req.tag, ctx, true).await?; conn.begin().await?; - let word_combinations_way = if add_req.title.chars().count() > funs.conf::().word_length.unwrap_or(15) { "public.chinese_zh" } else { "simple" }; + let word_combinations_way = if add_req.title.chars().count() > funs.conf::().word_length.unwrap_or(30) { "public.chinese_zh" } else { "simple" }; conn.execute_one( &format!( r#"INSERT INTO {table_name} @@ -103,7 +99,7 @@ pub async fn modify(tag: &str, key: &str, modify_req: &mut SearchItemModifyReq, if let Some(title) = &modify_req.title { sql_sets.push(format!("title = ${}", params.len() + 1)); params.push(Value::from(title)); - let word_combinations_way = if title.chars().count() > funs.conf::().word_length.unwrap_or(15) { "public.chinese_zh" } else { "simple" }; + let word_combinations_way = if title.chars().count() > funs.conf::().word_length.unwrap_or(30) { "public.chinese_zh" } else { "simple" }; sql_sets.push(format!("title_tsv = to_tsvector('{word_combinations_way}', ${})", params.len() + 1)); if title.chars().count() > 15 { params.push(Value::from(format!( @@ -179,9 +175,11 @@ WHERE key = $1 fn generate_word_combinations_with_length(original_str: &str, split_len: usize) -> Vec { let mut combinations = Vec::new(); let original_chars = original_str.chars().map(|c| c.to_string()).collect::>(); - for i in 0..original_chars.len() - split_len + 1 { - let word = original_chars[i..=(i + split_len - 1)].join(""); - combinations.push(word); + if original_chars.len() > split_len { + for i in 0..original_chars.len() - split_len + 1 { + let word = original_chars[i..=(i + split_len - 1)].join(""); + combinations.push(word); + } } combinations } @@ -729,8 +727,8 @@ pub async fn refresh_data(tag: String, funs: &TardisFunsInst, ctx: &TardisContex for item in result { let title: String = item.try_get("", "title")?; let key: String = item.try_get("", "key")?; - let word_combinations_way = if title.chars().count() > funs.conf::().word_length.unwrap_or(15) { "public.chinese_zh" } else { "simple" }; - let word_combinations = if title.chars().count() > funs.conf::().word_length.unwrap_or(15) { + let word_combinations_way = if title.chars().count() > funs.conf::().word_length.unwrap_or(30) { "public.chinese_zh" } else { "simple" }; + let word_combinations = if title.chars().count() > funs.conf::().word_length.unwrap_or(30) { Value::from(format!( "{} {}", title.as_str(), diff --git a/spi/spi-search/tests/config/conf-default.toml b/spi/spi-search/tests/config/conf-default.toml index 00568ede0..bb28d9ed0 100644 --- a/spi/spi-search/tests/config/conf-default.toml +++ b/spi/spi-search/tests/config/conf-default.toml @@ -1,5 +1,8 @@ [cs] +[csm.spi-search] +word_length=30 + [fw.web_server] port = 8080 tls_key = """ diff --git a/spi/spi-search/tests/test_search.rs b/spi/spi-search/tests/test_search.rs index a6e1d99b2..b3fdf822a 100644 --- a/spi/spi-search/tests/test_search.rs +++ b/spi/spi-search/tests/test_search.rs @@ -41,7 +41,7 @@ async fn init_data() -> TardisResult<()> { sleep(Duration::from_millis(500)).await; let funs = TardisFuns::inst_with_db_conn(DOMAIN_CODE.to_string(), None); - let kind_id = RbumKindServ::get_rbum_kind_id_by_code(spi_constants::SPI_ES_KIND_CODE, &funs).await?.unwrap(); + let kind_id = RbumKindServ::get_rbum_kind_id_by_code(spi_constants::SPI_PG_KIND_CODE, &funs).await?.unwrap(); let ctx = TardisContext { own_paths: "".to_string(), ak: "".to_string(), @@ -61,7 +61,7 @@ async fn init_data() -> TardisResult<()> { &SpiBsAddReq { name: TrimString("test-spi".to_string()), kind_id: TrimString(kind_id), - conn_uri: env::var("TARDIS_FW.ES.URL").unwrap(), + conn_uri: env::var("TARDIS_FW.DB.URL").unwrap(), ak: TrimString("".to_string()), sk: TrimString("".to_string()), ext: "{\"max_connections\":20,\"min_connections\":10}".to_string(),