0

stackexchange サイトから機能をコピーしたい: 質問のリストがあるたびに、右側に、カウント (頻度) を含む、それらに表示されるすべてのタグのリストがあります。ビュー内のすべての要素を反復せずにこの種の情報を取得する方法はありますか? 一般的なビュー データ ソースで動作し、ビューのコンテンツをフィルター (キー、カテゴリ) またはフルテキストで変更できるとします。私はすでにいくつかの解決策を検討しました(そして拒否しました):

  • コレクションを繰り返します - パフォーマンス上の理由から使用できません (特に ViewNavigator を使用できない場合 - FT クエリ)。
  • レンダリングされたコンテンツのタグのカウント - 表示可能なページのみに制限され、他のページのタグはカウントされません (stackexchange はすべてのページのタグをカウントします)。良いパフォーマンスですが。
  • DocumentCollection.intersect - すべてのタグを反復し、ソース コレクションに対してそのタグを持つすべてのドキュメントの交差するコレクションは、そのようなタグを持つドキュメントの数になります。このアプローチはパフォーマンスキラーです。

  • 4

    2 に答える 2

    3

    要約列で分類されたビューを使用して、json でクエリを実行できます。折りたたむ必要があります。?ReadViewEntries&Outputformat=json

    于 2012-05-04T03:51:42.670 に答える
    1

    2 つの基本的なアプローチを検討します。

    1. 質問文書の複数値要約テキスト フィールドにタグを保存し、そのフィールドに基づいて分類されたビューを作成し、ビューを開き、NotesViewNavigator を作成し、CreateViewNavFromCategory を使用して、タグに一致する文書のみを含む NotesViewNavigator を作成します。 NotesViewNavigator.count() プロパティ値を取得します。

    2. 質問ドキュメントのフィールド (複数値または単一値、要約テキストまたは非要約テキスト、さらにはリッチ テキスト フィールド) にタグを保存し、データベースの全文索引を作成し、Database.FTSearch メソッドを使用します。 FIELD キーワードを使用して NotesDocumentCollection を取得し、NotesDocumentCollection.count() プロパティを使用する検索式。

    フィルタリングについては、後者のアプローチの方が良いと思います。FT クエリを修正して、フィルタリングを実行するための追加条件を含めることができる場合があります。これは非常に柔軟で、かなり高速です。一方、NotesViewNavigator では、フィルタリングを行うために NotesViewEntry オブジェクトを反復処理する必要があります。

    于 2012-05-04T04:11:23.450 に答える