我在haskell中实现倒排索引。 我已经说过我的代码会创建我提供的文档列表中每个单词的倒排索引。然后将此索引写入名为inv.txt的文件中,该文件类似于:
(“this”,[d1,d2,d5])
( “是”,[D3,D4,D16])
( “你好”,[D1])
但是,我想添加一个额外的案例,如果我将新文档添加到我的文件夹,并调用该函数,“inv.txt”将根据新添加的文档进行更新。 所以它现在变得像
(“this”,[d1,d2,d5,new Doc])
( “是”,[D3,D4,D16])
( “你好”,[D1])
(“get”,[new Doc])
但我想不出有办法解决这个问题。在哈斯克尔这是不可能的? (没有重写整个文件,比如使用seekg或peekg函数或其他东西)?
答案 0 :(得分:1)
由于您的主要用例是向索引添加文档,所以:
例如,假设您的索引文件包含以下行:
("this",[d1,d2,d5])
...
("this", [d6])
当您遇到第一个“this”对时,您将在Map中创建该对,当您遇到第二个“this”对时,您将d6
附加/前置到与该键关联的当前列表。