“タンゴ “について書かれた資料をすべて見つけたい!早く欲しい!できるかな?”
OK、でもまずは呼吸を整えて!
4D Write Proのドキュメント内のキーワード検索は、各ドキュメントに新しいインデックス属性を追加するだけです。なぜなら、この種の検索はあまり必要ではないので、ドキュメントのサイズを体系的に増加させることは意味がないからです。しかし、必要な時には、このタイプのインデックスは非常に簡単に構築できます。
“タンゴはアルゼンチンの伝統的なダンスである”。我々の目的は、文書の内容から単語のリストを作成することである。これは主に2つのコマンドを使って行われる。
- WP Get text – ドキュメントの生テキストを返す
- Get text keywords – は、与えられたテキストの単語でテキスト配列を埋めます。この配列が満たされたら、4D Write Proのドキュメントオブジェクトの属性として追加し、キーワード検索のターゲットとして使用するだけです。
では、もう少し詳しく見ていきましょう。
ドキュメントをSIDEする際に見逃せないこと
WP Get text は、ターゲットの内容をプレーンテキストで返します。対象は指定した範囲でも、文書全体でも構いません。引数としてドキュメントを渡した場合、ドキュメントの本文のテキストのみが返されます。ヘッダやフッタは無視されますが、これはおそらく望ましいことではありません。ドキュメントの各セクションはそれ自身のヘッダーと フッターを持つことができるので、それぞれをループしてその内容を読む必要があります。異形式(最初のページ、右ページ、左ページなど)を必ず考慮に入れてください。
テキストを配列に格納する
Get text keywords は、ソーステキストの内容に基づいて配列を埋めます。ここで唯一微妙なのは、オプションの星印 (*) パラメータを忘れてはいけないということです。これにより、テキスト中の単語とは異なる値のみを配列に格納することができます。これにより、不必要な「重み」を回避することができます:-)
ドキュメントにインデックスを作成します。
しかし、4D Write Pro ドキュメントの既存の(あるいは将来の)公開属性との潜在的な競合を避けるために、その前にアンダースコアを付けることを強くお勧めします(例:”_keywords”)。
もちろん、このインデックス作成は、ドキュメントが変更されるたびに行う必要がありますが、これは本当に非常に速いタスクで、ユーザーにとって目立ったスローダウンを引き起こすことはありません。
インデックスを作成しましょう
キーワードインデックスを使ったクエリを高速かつ効率的に行うには、もちろんドキュメントそのものをインデックス化する必要があります。インデックスの大きさについて心配する必要はありません。公開された (public) 属性のみがインデックス化されるので、ごくわずかなオーバーサイズが予想されるだけです。例えば、この目的だけのために新しいオブジェクトフィールドを作成する必要はありません。これは全く無駄であり、占有するスペースは既存のオブジェクト(つまり4D Write Proドキュメント自体)を使用するよりも大きくなってしまうでしょう。
オブジェクトフィールドの場合、「自動」は「クラスタBツリー」を意味し、ビジネスレターなどの文書に最適です。
このインデックスでクエリーを行う
古典的なクエリは、「属性による」クエリでなければならない。属性はコレクションなので、開閉カッコ [ ] をつけて、このコレクション内を検索しなければならないことを4Dに示さなければならないことに注意してください。例えば
QUERY BY ATTRIBUTE([SAMPLE];[SAMPLE]WP; "_keywords[]"; =;$val)
ORDAクエリも同じ原理で実行されます。
$entitySel:=ds.SAMPLE.query("WP._keywords[] = :1";$val)
まとめ
もしあなたの文書で、このタイプのインデックス作成が最初から予見されておらず、必要性が生じたとしても、遅すぎることはありません!Apply to selection インデックス作成方法は、完璧に仕事をこなすでしょう。検索は、複数の単語を一度に(すべての単語を)、または別々に(少なくとも一つの単語を)考慮するように組み合わせることもできます。これにより、あなた(そして特にあなたのデータベースのユーザー)は、テキストに含まれる単語に応じて、非常に迅速にテキストを見つけることができます。
これで、フルテキストインデックスを作成する(そして多分削除する)ための2つの方法ができました!これらは、4D V17から使用することができます。あなたのアプリケーションで使用できるコードスニペットをご覧ください。