diff --git a/src/engine/tag_extractor.rs b/src/engine/tag_extractor.rs index 0c601f0..18b376a 100644 --- a/src/engine/tag_extractor.rs +++ b/src/engine/tag_extractor.rs @@ -176,7 +176,7 @@ fn extract_tags_with_jieba( if seen.contains(&word_lower) { continue; } // 按词性过滤:只保留名词相关,但排除人名(nr) - let pos = tag.tag.as_str(); + let pos = tag.tag; let category = match pos { // 名词类(排除人名) "n" | "ng" => "noun", // 普通名词 diff --git a/src/engine/title_parser.rs b/src/engine/title_parser.rs index 781ed73..00b107f 100644 --- a/src/engine/title_parser.rs +++ b/src/engine/title_parser.rs @@ -225,7 +225,7 @@ fn extract_person_with_jieba(title: &str) -> Option { let word = tag.word.trim(); if word.len() < 2 { continue; } - let priority = match tag.tag.as_str() { + let priority = match tag.tag { "nr" => 0, // 人名(最高优先级) "nrfg" => 1, // 古体人名 "nrt" => 2, // 音译人名 @@ -482,14 +482,14 @@ pub fn extract_person_and_tags(title: &str) -> (Option, Vec<(String, Str } /// 从 jieba 分词结果中提取人名 -fn extract_person_from_tags(tags: &[jieba_rs::Token]) -> Option { +fn extract_person_from_tags(tags: &[jieba_rs::Tag]) -> Option { let mut candidates: Vec<(String, usize)> = Vec::new(); for tag in tags { let word = tag.word.trim(); if word.len() < 2 { continue; } - let priority = match tag.tag.as_str() { + let priority = match tag.tag { "nr" => 0, // 人名(最高优先级) "nrfg" => 1, // 古体人名 "nrt" => 2, // 音译人名 @@ -509,7 +509,7 @@ fn extract_person_from_tags(tags: &[jieba_rs::Token]) -> Option { /// 从 jieba 分词结果中提取标签(排除人名) fn extract_tags_from_jieba_result( - tags: &[jieba_rs::Token], + tags: &[jieba_rs::Tag], person_name: Option<&str>, ) -> Vec<(String, String)> { use std::collections::HashSet; @@ -553,7 +553,7 @@ fn extract_tags_from_jieba_result( if !seen.insert(word_lower.clone()) { continue; } // 按词性分类 - let pos = tag.tag.as_str(); + let pos = tag.tag; let category = match pos { "n" | "ng" => "noun", "nz" => "proper",