DocumentDbコレクションに格納されているドキュメントのインデックスを作成しようとしているときに問題が発生しています。Azure Search IndexerがDocumentDBのドキュメントからGeographyPointファイルを取得できません。
変更されたドキュメントを取得するために、カスタムSQLを使用してインデクサーのデータソースを定義しました。インデックス化するドキュメントにはLocationGP
というMicrosoft.Spatial.GeographyPointというプロパティがあり、同じ名前のインデックスのフィールドにマップされ、DataType.GeographyPoint
と定義されています。
インデクサーは、次のとおりです。
列「LocationGP」インデックス内のタイプEdm.GeographyPointの分野
任意のアイデアと互換性がありませんJOBJECT型のでしょうか?
これは、データソースの定義です:
return new DataSource()
{
Name = "opportunities-datasource",
Container = new DataContainer()
{
Name = "Companies",
Query = @"SELECT o.id,
o.CompanyName,
o.LocationGP,
o.Location.CityName AS LocationCity,
o.Location.StateName AS LocationState,
o.Location.CountryName AS LocationCountry,
o._ts
FROM Companies o WHERE o.DocType = 1 AND o._ts > @HighWaterMark"
},
Type = "documentdb",
Credentials = new DataSourceCredentials()
{
ConnectionString = String.Format("AccountEndpoint={0};AccountKey={1};Database=CompaniesDb", DocumentDbEndpointUri, DocumentDbPrimaryKey)
},
DataChangeDetectionPolicy = new HighWaterMarkChangeDetectionPolicy("_ts"),
DataDeletionDetectionPolicy = new SoftDeleteColumnDeletionDetectionPolicy("Status", "2")
};
これはドキュメントです:
[{
"id": "088e1e97-6d59-40ad-a9be-620fdc7938c7",
"CompanyName": "Neptune",
"LocationGP": {
"Latitude": 39.8010482788086,
"Longitude": -89.6436004638672,
"IsEmpty": false,
"Z": null,
"M": null,
"CoordinateSystem": {
"EpsgId": 4326,
"Id": "4326",
"Name": "WGS84"
}
},
"Location": {
"CityName": "Springfield",
"CountryName": "US",
"StateName": "IL"
},
"Status": 1,
"DocType": 1,
"Timestamp": "2016-08-19T16:08:46.0481948Z",
"_ts": 1471622922
}]
参照先のドキュメントでは、Azure Search .NET SDKについて説明しています。 Microsoft.Spatial.GeographyPointを使用する例は、インデックスAPIを使用してドキュメントをインデックスにプッシュする例です。 SDKには、GeographyPointからGeo-JSON(a.k.a. Edm.GeographyPoint)に変換する特別なシリアル化ロジックがあります。 –