全文搜索时报错:文本域不支持关系运算符

在对时间、数值域进行全文搜索的时候,如果使用了>、<等关系运算符,有时会报如下错误:

文本域不支持关系运算符

去文档域中查看一下,明明是日期域,怎么提示的却是文本域呢?

问题是这样的:在 nsf 中,有一个叫 UNK 表(可以用 notespeek 查看,在 Item Def Table 中)的东西,保存了数据库中所有字段的类型。当包含某个字段的第一个文档添加到库时,会写入 UNK 表。所以如果之前在数据库中曾经出现过同名的文本字段,那么这个 UNK 表中记录的就是文本型,所以会报前面说的错误。

原因搞清楚了,想要解决就简单了:

  1. 清除所有非日期型的同名字段
  2. 删除全文索引
  3. 压缩数据库,此时会重建 UNK 表(我测试时需要 compact -c 才行)
  4. 重建全文索引

参考资料:Searching on a field in Notes fails when indexer does not recognize field data type