sqlite 병 음 정렬

1. 준비 작업:
홈 페이지 에서 병 음 표를 다운로드 하 다.
http://www.unicode.org/Public/6.0.0/ucd/  
Unihan.zip      

압축 풀기 후 유 니 한Readings. txt 파일 은 0x4e 00 - 0x9fa 5 사이 의 줄 을 꺼 내 고 kMandarin 표준어 형식 (kHanyuPinlu 수량 이 너무 적 음) 만 있 으 면 됩 니 다.아래 와 같다
U+4E00  kMandarin       YI1
U+4E01  kMandarin       DING1 ZHENG1
U+4E02  kMandarin       KAO3 QIAO3 YU2
U+4E03  kMandarin       QI1
U+4E04  kMandarin       SHANG4 SHANG3
。。。。。
링크 ux 스 크 립 트 는 다음 과 같 습 니 다.
grep  'kMandarin' Unihan_Readings.txt > putong.txt
kMandarin 을 빈 칸 으로 바 꾸 기
sed 's/kMandarin/ /g' putong.txt > pug.txt
 wc -l pug.txt
25550 pug.txt
다음은 0x4e 00 - 0x9fa 5 로 시작 하 는 줄 을 삭제 합 니 다.
grep -n "U+4E00" pug.txt
5060:U+4E00             YI1
sed '1,5059d' pug.txt > tmp.txt
grep -n "U+9FA5" tmp.txt
20252:U+9FA5            YU4
sed '20253,$d' tmp.txt > pugd.txt
이렇게 0x4e 00 - 0x9fa 5 로 시작 하 는 줄 만 남 았 습 니 다.
그리고 정렬 을 시작 하 겠 습 니 다.
그리고 정렬 을 시작 하 겠 습 니 다.
sort -t" "  -k2 pugd.txt > pugds.txt
U+5416          A1
U+9515          A1
U+963F          A1 A4 A5 E1 E3 A3
U+9312          A1 KE1
U+55C4          A2 SHA4
U+554A          A5
U+54C0          AI1
개인 적 으로 병 음 음 음 조 를 한 후에 주파수 배열 을 더 해 야 한다 고 생각 합 니 다. 다 음 자 는 첫 번 째 를 취하 고 어떤 순 서 는 다음 과 같 습 니 다.뻔 하 잖 아. 첫 번 째 로 해 야 지.직접 사용 하 는 문서 가 없 으 면 그만 두 어 라. 어차피 자주 사용 하지 않 는 글 자 는 거의 나타 나 지 않 는 다.0x4e 00 - 0x9fa 5 를 넣 고 병 음 대 주파수 에 대응 하 는 정렬 은 먼저 병 음 성조 와 주파 수 를 넣 고 다 음 자 는 첫 번 째 (자신의 취향 에 따라 배열 할 수 있 으 며 병 음 순 서 는 긍정 적 이다)
[11] 아크 악티늄 악티늄
[12] 네
[13] 아
[14] 아
[15] 아아
--------------------------------------------------------------------------------------------
그리고 첫 번 째 열 내용 을 추출 합 니 다.
cut -c1-6 pugds.txt > pugdsc.txt
U+5416
U+9515
U+963F
/ / 소문 자 대문자
//sed 's/.*/\U&/g' file
/ / 대문자 소문 자
sed 's/.*/\L&/g'  pugdsc.txt > tmp.txt
/ / u + 를 tab [0x 형식 으로 바 꾸 고 최종 적 으로 [0x 0616] = 0x 0000, 배열 형식 으로 바 꿉 니 다.
sed 's/u+/\t[0x/' tmp.txt > tmp2.txt
/ / 줄 끝 삽입 "] = 0x"
sed 's/$/] = 0x/' tmp2.txt > tmp3.txt
/ / 배열 아래 표 시 를 삽입 합 니 다.
awk '/$/{gsub(/$/,sprintf("%.04x,",++i))}1'  tmp3.txt > tmp4.txt
/ / 배열 이름 삽입
sed -i '1 i\static const unsigned short buf[] ={' tmp4.txt
/ / 배열 끝 문자 삽입
sed '$ a\};' tmp4.txt > pugdscb.txt
--------------------------------------------------------------------------------
결 과 는 다음 과 같다.
static const unsigned short buf[] =
{
        [0x5416] = 0x0001,
        [0x9515] = 0x0002,
        [0x963f] = 0x0003,
        [0x9312] = 0x0004,
        [0x55c4] = 0x0005,
        [0x554a] = 0x0006,
        [0x54c0] = 0x0007,
        [0x54ce] = 0x0008,
        ...
};
2.
sqlite3_create_collation(db,"pinyin",SQLITE_UTF8,NULL,binCollFuncUtf8);
레 퍼 런 스
https://groups.google.com/forum/#!topic/sunpinyin-developers/Q0z5J_LG7Ag

좋은 웹페이지 즐겨찾기