Ryan19929 commented on code in PR #50141:
URL: https://github.com/apache/doris/pull/50141#discussion_r2063641659
##########
be/src/olap/rowset/segment_v2/inverted_index/analyzer/ik/core/CharacterUtil.cpp:
##########
@@ -20,77 +20,50 @@
namespace doris::segment_v2 {
int32_t CharacterUtil::identifyCharType(int32_t rune) {
- // Numbers
- if (rune >= 0x30 && rune <= 0x39) {
+ if (rune >= '0' && rune <= '9') {
return CHAR_ARABIC;
}
-
- // English
- if ((rune >= 0x61 && rune <= 0x7a) || (rune >= 0x41 && rune <= 0x5a)) {
+ if ((rune >= 'a' && rune <= 'z') || (rune >= 'A' && rune <= 'Z')) {
return CHAR_ENGLISH;
}
- // CJK Unified Chinese Characters
- if ((rune >= 0x4E00 && rune <= 0x9FFF) || (rune >= 0x3400 && rune <=
0x4DBF) ||
- (rune >= 0x20000 && rune <= 0x2A6DF) || (rune >= 0x2A700 && rune <=
0x2B73F) ||
- (rune >= 0x2B740 && rune <= 0x2B81F) || (rune >= 0x2B820 && rune <=
0x2CEAF) ||
- (rune >= 0x2CEB0 && rune <= 0x2EBEF) || (rune >= 0x30000 && rune <=
0x3134F)) {
+ UBlockCode block = ublock_getCode(rune);
+
+ if (block == UBLOCK_CJK_UNIFIED_IDEOGRAPHS || block ==
UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS ||
Review Comment:
Previously, C++ matched Java's behavior by outputting extended characters
(e.g., "𠮷", CHAR_SURROGATE Type) as standalone tokens without dictionary
matching. After modification, C++ now correctly matches these characters to
dictionaries (e.g., "𠮷" is recognized), but this introduces segmentation
differences from Java (e.g., [𠮷B] vs. [𠮷][B]). It's OK?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]