$30 off During Our Annual Pro Sale. View Details »

全文検索とUNKテーブル

 全文検索とUNKテーブル

Notes/Domino の設計変更が原因で全文検索が正しく機能しなくなった不具合があり、サポートが言った通り対応したが効果がなく、独自のやり方で解消した事例の紹介です。

2017年12月15日開催の「テクてくLotus技術者夜会」で使用したスライドです。

Haruyuki Nakano

September 17, 2022
Tweet

More Decks by Haruyuki Nakano

Other Decks in Technology

Transcript

  1. 2017年12月15日 中野 晴幸 Twitter: @harunakano

  2. None
  3. フィールド C_day を日付で検索

  4. None
  5. DB内部の UNKテーブルという、フィールド 情報を格納するテーブルが不正な状態となってし まった事により発生した可能性があります。

  6. “Text” だとぉ? Unique Key Table : データベース内で使われているアイテムの名前と その型の情報を格納している

  7. 次の手順でUNKテーブルを更新し、解消するか確 認してほしい ◆ 全文索引を削除する ◆ キャッシュを削除する ◆ dbcache flush ◆

    コピー圧縮する ◆ Load compact –c xxx.nsf ◆ 全文索引を作成する
  8. 効果なし!!

  9. None
  10. Definition of UNK and ‘Database has too many unique field

    names’ message http://www-01.ibm.com/support/docview.wss?rs=463&uid=swg21100238 一部抜粋 英語 日本語 The compact process deletes the UNK, and scans all notes in the database for the existence of unique fields. If the field exists anywhere (design element or live document), it will be added to the newly built UNK. コンパクトプロセスはUNKを削除し、データ ベース内のすべてのノートをスキャンして一意 のフィールドが存在するかどうかを調べます。 フィールドがどこかに存在する場合(設計 要素または生の文書)、新しく作成 されたUNKに追加されます。
  11. None
  12. @Created が古い順ではなく… NoteID が小さい順に並ぶ!

  13. 文字!!

  14. フォーム上の日付/時刻のフィールドへ値を入力せ ず保存すると、アイテムの「データ形式の種類」は文 字に。

  15. 【サンプル】値のない日付/時刻フィールドに置換する: Dim ss As New NotesSession Dim doc As NotesDocument

    Dim item As NotesItem Dim ndt As New NotesDateTime(“”) ‘ワイルドカードの日付 Const FLD = "C_day" Set doc = ss.Currentdatabase.Unprocesseddocuments.Getfirstdocument() If doc.Hasitem( FLD ) Then doc.Removeitem FLD Set item = New NotesItem(doc, FLD, ndt) doc.save True, False
  16. 「Time」になった! 検索もバッチリ!!

  17. ◆ フォームを作り直したDBは検索に気を付けろ!! ◆ ソートしないビューは NoteID の小さい順に文書 が並ぶ ◆ “notes 鬼”でNotes検索の記事を探せる