-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
能否直接判断当前候选是否进行了补全? #246
Comments
用反查的方法查当前候选的编码和当前输入的编码是否一致,如果不相等且以当前input为开头,则为补全 |
@mokapsing 在哪里反查?对于任意候选都可以吗? |
local dict = env.engine.schema.config:get_string("translator/dictionary") or env.engine.schema.schema_id
env.reversedb = ReverseDb("build/" .. dict .. ".reverse.bin")
--...
for cand in tran:iter() do
local code = env.reversedb:lookup(cand.text)
end 但这样有个问题,一字多码会查出多个 或者(拼音)开启spelling_hint,判断comment和输入码是不是相等 |
一般从 table_translator (enable_completion: true 时) 产生的 candidate 可以从 cand.type =="completion" 来判断 |
script_translator下此方法无效。 |
这两种方式都会返回真实编码,而非拼写运算后的编码 |
我制作了一份简拼词库,使用的过程中发现低权重的简拼词库常常会被高权重的主词库的补全顶下去,于是我就尝试削减补全候选的数量,但是我没有找到判断script translator候选是否为补全的接口。
在table_translator中,来自补全的候选都会通过cand.comment标识,但是script_translator并不支持这种操作,所以我尝试了其他的办法,目前发现了一个可行方式:
双拼方案中补全候选的input的长度总是cand.text长度的2倍再+1,所以可以通过捕捉这种关联来判断是否为补全。
效果图:
这个方案美中不足的是,他只能判断定长方案的候选是否为补全,对不定长方案无能为力,所以我想知道有没有办法能判断任何translator的候选是否处于补全状态。
The text was updated successfully, but these errors were encountered: