我需要通过添加/删除单词来教地名词典。
我知道how to add new Lookup,但是当我尝试删除它时,并未删除Lookup。
gazetter.remove("string to be found"); // returns false
请帮忙!
最佳答案
(默认)地名词典中有两件事:
用于搜索源文本的有限状态机。
地名词典的线性定义,表示字典中所有单词的列表。它不直接用于搜索文本。
在启动时,它们的用法如下:
从输入文件中读取线性定义。
有限状态机是根据定义构造的。
直接在地名词典实例上调用的gazetter.add()
或gazetter.remove()
之类的方法仅会修改有限状态机。更改将在地名词典的行为上可见,但在线性定义中不可见。
线性定义中的方法仅修改线性定义。您必须使用store()
和reInit()
根据线性定义更新地名词典中的有限状态机。之后,它们将同步,并且地名词典将查找新短语。这也意味着重新初始化后,仅在状态机上所做的更改将丢失。
要回答您的问题:
如果您的代码返回了false
,则该短语在有限状态机中不存在,并且地名词典无论如何都不会与文本中的该短语匹配。
如果要从线性定义中删除短语,则必须使用相应的方法(在我的previous answer中有简短描述)。