Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

全文検索とUNKテーブル

1,184 views

Published on

約20年前に作成した Notes データベースで、条件式に日付を含めて全文検索したある日のこと、メッセージ「関係演算子は文字フィールドでサポートされていません」が表示され検索できなくなってしまった。
サポートからの指示どおり操作してみたが解消しない。
どうやって再び検索できるようになったかのレポートです。

※2017年12月 テクてくLotus技術者夜会 のライトニングトークで発表したスライドに、少し手を加えています

Published in: Software
  • Be the first to comment

  • Be the first to like this

全文検索とUNKテーブル

  1. 1. 2017年12月15日 中野 晴幸 Twitter: @harunakano
  2. 2. フィールド C_day を日付で検索
  3. 3. DB内部のUNKテーブルという、フィールド 情報を格納するテーブルが不正な状態となってし まった事により発生した可能性があります。
  4. 4. “Text” だとぉ? Unique Key Table : データベース内で使われているアイテムの名前と その型の情報を格納している
  5. 5. 次の手順でUNKテーブルを更新し、解消するか確 認してほしい  全文索引を削除する  キャッシュを削除する  dbcache flush  コピー圧縮する  Load compact –c xxx.nsf  全文索引を作成する
  6. 6. 効果なし!!
  7. 7. 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に追加されます。
  8. 8. @Created が古い順ではなく… NoteID が小さい順に並ぶ!
  9. 9. 文字!!
  10. 10. フォーム上の日付/時刻のフィールドへ値を入力せ ず保存すると、アイテムの「データ形式の種類」は文 字に。
  11. 11. 【サンプル】値のない日付/時刻フィールドに置換する: 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
  12. 12. 「Time」になった! 検索もバッチリ!!
  13. 13.  フォームを作り直したDBは検索に気を付けろ!!  ソートしないビューは NoteID の小さい順に文書 が並ぶ  “notes 鬼”でNotes検索の記事を探せる

×