0

客户有一个长期存在的 IBM Notes 应用程序,其中有人将字段的类型从数字更改为文本。

因此,现在当我们尝试进行 FT 搜索时:[myField] = "1234" 收到错误消息:"Query is not understandable"。

如果我这样做: [myField] = 1234 它可以工作,但不会返回任何命中。即使有一个 myField = "1234" 的文档。

该字段是设计中的文本类型。

我创建了一个新的测试视图,只允许来自一个表单的文档。

删除全文索引(甚至在文件系统上) updall -X Fixup -r 创建全文索引

在我的测试视图中,我有一列显示正在搜索的字段内容是否为文本类型 @IsText(myField) 并且所有行都显示:1(所以它的字段内容必须是文本)

以上都不起作用,所以我在本地创建了一个新的数据库副本。同样的问题。

创建了一个全新的数据库(仅用于测试)、表单、视图和全文索引,并且可以正常工作。

感觉就像现有的数据库设计在某处存储了旧的字段类型......

任何想法表示赞赏。

谢谢!

/J

4

2 回答 2

5

数据类型和字段名称存储在 UNK 表中。每个字段名称只有一个条目,因此在具有不同数据类型的应用程序中不要多次使用相同的字段名称至关重要。

您需要重建 UNK 表,正如我在这里写的博客http://www.intec.co.uk/full-text-search-musings/

请注意,它必须是离线契约,正如 Duffbert 在此处所说的那样http://www.duffbert.com/duffbert/blog.nsf/d6plinks/TDUF-5SMHV4。如果您在进行压缩时数据库中有任何人,则会失败并且不会重建 UNK 表。

于 2013-06-13T12:42:49.853 回答
0

链接很有用,但如果您不想从文档中删除数据 - 对我来说,这些步骤有效(并且不需要从设计器中的表单中删除字段):

  • 从具有管理器访问权限的设计器运行,其中包含此类代码

    Sub Initialize  
    Dim s As New NotesSession
    Dim db As NotesDatabase
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim i As Integer
    Dim nc As NotesNoteCollection
    Dim noteid As String
    Dim nextnoteid As string
    Dim itemArr As Variant
    Dim NeedSave As Boolean
    
    Const ITEM_NAME = "itemName1|itemName2"
    
    itemArr = Split( ITEM_NAME, "|" )
    'погромист-кун не должен забывать про наличие итемов в формах...
    Set db = s.Currentdatabase  
    Set nc = db.CreateNoteCollection(False) 
    nc.SelectForms = true
    Call nc.BuildCollection
    noteid = nc.Getfirstnoteid()
    For i =  1 To nc.Count
        Set doc = db.Getdocumentbyid( noteid )
        noteid = nc.Getnextnoteid( noteid )
        NeedSave = false
        ForAll IA In itemArr
            If doc.Hasitem( IA ) Then
                Call doc.Removeitem( IA )
                NeedSave = true
            End If
        End ForAll
        If NeedSave Then
            Call doc.Save( True, False )
        End If
        Print CStr( i ) & "\" & CStr( nc.Count )
    Next    
    
    End Sub
    
  • 删除数据库索引

  • 从管理员命令运行 lo compact database.nsf -c ,如上面链接中所述
  • 创建索引
于 2014-01-14T14:31:12.537 回答