誰かが解決策を持っているかどうかを確認するために投稿しているか、または紺色の検索で使用するためにいくつかのデータをモデリングするためのガイダンスを提供できます。Azure Searchのドキュメントデザイン
問題領域
私は現在、私が検索したいいくつかのデータをモデル化するためにDocumentDBを使用しています。
{
_id, //key - Guid
name, //searchable - String
description, //searchable - String
tags: [ "T1", "T2", ...] //facet - Collection(String)
locations: [
{
coordinate, //filter - GeoLocation (lat & long)
startDateTime, //filter - DateTimeOffset
endDateTime //filter - DateTimeOffset
},
...
]
...
},
...
関係::私は、現時点では "エンティティA" と呼ぶ私の文書は、のようなものに見える タグ0 ... nは、エンティティA &場所0を... nは、エンティティA
平坦化エンティティAとタグの名前、説明、ファセットの簡単なインデックスとクエリを設定すると、うまく動作します。
問題は、インデックスを作成する場所を追加しようとしていることにあります。私が検索したい(自然言語で)効果的なものは、次のとおりです。 特定の用語については、x開始日とy終了日と重複する座標に近いすべてのエンティティを見つけます。
オンラインで見つけられるものから場所は文字列になると機能します。
はhttps://blogs.msdn.microsoft.com/kaevans/2015/03/09/indexing-documentdb-with-azure-seach/ https://docs.microsoft.com/en-us/azure/search/search-howto-index-json-blobs
これはgeodistance、および日付範囲クエリを実行することができるという力を失うようです。
現在の思考
分割エンティティ2つのコレクション
新しいエンティティA文書に文書:
{
_id, //key - Guid
name, //searchable - String
description, //searchable - String
tags: [ "T1", "T2", ...] //facet - Collection(String)
...
},
と、複数の場所実体
{
_id,
documentId, //relates to Document._id
coordinate,
startDate,
endDate
}
質問:
新しいエンティティAと場所の2つのインデックスを作成し、結果を結合する方がよいでしょうか?
私はこれを実装例の人を知っています、これはhttps://docs.microsoft.com/en-us/azure/search/search-modeling-multitenant-saas-applications
マルチテナント検索 あると思いますか?
長所
- は、それが2件の検索は、クエリごとにヒットして、結果をマージする(これは理想であってもなくてもよい)が必要となる
短所
- に動作すると思います。
OR
です完全ので、すでに
{
_id,
documentDBId, //relates to Document._id
coordinate,
startDate,
endDate,
name,
description,
tags: []
...
}
賛否
- ような何かかなりフラットすなわち、エンティティA及び場所エンティティを "反転" する方が良いはず簡単に索引をつけることができます。
- 海が1つRCHヒットなしこれらが変更された場合、それは 複数の更新を必要とする名前、説明、タグなどについて
短所
- をマージします。日付は、複数の開始日と終了日
OR
をまたがる場合
特定のクエリに一致する場所/日付の組み合わせの数が比較的少ない限り、ページングが実際に問題になるかどうかはわかりません。すべての一致を取得し、対応する文書IDのリストをまとめ、それを使用してエンティティAインデックスをフィルタリングします。ユーザーに表示するためのページングは、エンティティAのインデックスで発生します。 –
ああ、そうすることで、最初の検索の結果の数が妥当である限り、ページングを処理できるようになります。 –
ありがとう@BruceJohnston。私はそれを打つつもりで、私がどれだけ遠く/問題に遭うかを見ていくつもりです。 –