我需要通过添加/删除单词来教导地名词典。
我知道how to add new Lookup但是当我尝试删除它时,查找功能未被删除。
gazetter.remove("string to be found"); // returns false
请帮忙!
答案 0 :(得分:1)
(默认)地名录中有两个独立的内容:
有限状态机用于搜索源文本。
地理定义的线性定义,代表字典中所有单词列表。它不直接用于搜索文本。
在启动时,它们按如下方式使用:
直接在地名词典实例上调用的gazetter.add()
或gazetter.remove()
等方法仅修改有限状态机。这些变化将在地名词典的行为中显示,但不会出现在线性定义中。
线性定义中的方法仅修改线性定义。您必须使用store()
和reInit()
根据线性定义更新地名词典中的有限状态机。之后,他们将同步,地名录将寻找新的短语。这也意味着重新启动后,仅在状态机上进行的更改将会丢失。
如果您的代码返回false
,则有限状态机中不存在该短语,并且无论如何,地名词典都不会匹配此短语。
如果你想从线性定义中删除短语,你必须使用各自的方法(我的previous answer中很快就会有描述)。
答案 1 :(得分:0)
您可能可以使用回答上一个问题Question about gazetteer update中描述的方法,但删除节点。猜猜您可以在javadoc中找到其他信息。
另一种选择(蛮力和稀有关键字更新)是: a)从您的管道中删除Gazetteer(并使用Factory.deleteResource从范围中删除) b)将.lst文件作为文件读取,每行显示纯文本 c)删除条目 d)将数据保存回以前的文件 e)重新启动地名词典并将新PR添加到您管道中的同一位置。
我认为第一种选择更适合于地名词典更新。