libchewing icon indicating copy to clipboard operation
libchewing copied to clipboard

關於 chewing_userphrase_remove() 的作用方式

Open ottokang opened this issue 4 months ago • 2 comments

目前在新酷音中,chewing_userphrase_remove() 需要傳入詞彙、注音符號做為參數,才能刪除詞彙,但是使用者時常是在選字清單中才發現誤加了詞彙,然後需要在這個狀態下刪除詞彙。

PIME 之前的實做方式是用 SQL 指令直接搜尋並刪除詞彙:https://github.com/EasyIME/PIME/blob/d456affb45b3a139bd213b9cdeef7b314b08ce5a/python/input_methods/chewing/chewing_ime.py#L530

這邊想討論一下,是否有可能在選字清單下,直接查詢詞彙的注音,這樣可以傳入 chewing_userphrase_remove() 並且刪除詞彙。

ottokang avatar Aug 07 '25 03:08 ottokang

chewing_userphrase_remove() 主要是用在不是輸入法的使用情境,如詞庫編輯器

現在的 C API 的確沒有方便可以取得某一候選詞的注音的方式,這裡有幾個相關的 API

你提出的使用情境有幾個解法

  1. 提供一個在有候選清單下可以用的 API,直接移除第 n 個候選詞 如 chewing_cand_Forget(ctx, n)
  2. 提供一個 API 提取候選詞的注音符號 chewing_cand_getPhoneSeq(ctx, n)
  3. 提供每個 interval 的注音 如 chewing_interval_getPhoneSeq(ctx, n)

還要考慮如果要移除內建詞庫的詞的情況該怎麼辦

kanru avatar Aug 07 '25 23:08 kanru

你提出的使用情境有幾個解法

1. 提供一個在有候選清單下可以用的 API,直接移除第 n 個候選詞 如 `chewing_cand_Forget(ctx, n)`

這個看起來最單純

2. 提供一個 API 提取候選詞的注音符號 `chewing_cand_getPhoneSeq(ctx, n)`
3. 提供每個 interval 的注音 如 `chewing_interval_getPhoneSeq(ctx, n)`

這兩個應該還要再搭配 1chewing_userphrase_remove()`

還要考慮如果要移除內建詞庫的詞的情況該怎麼辦 這個應該是還好,因為搜尋並且刪除的目標是 chewing.dat 個人詞庫,如果選到了內建詞庫的詞彙,就刪除失敗,再給使用者訊息回饋即可

ottokang avatar Aug 14 '25 07:08 ottokang