2

私はインデックスを持っています:

from rest in docs 
from prom in rest.RestPromotions

LuceneQuery を使用してクエリを実行すると、インデックスによって作成された重複ドキュメントが原因で、TotalResults が予想以上になります。スキップされたフィールドには、現在のページからスキップされた結果のみが含まれます。

個別の合計結果を取得する方法はありますか?

ドキュメントの種類は次のとおりです。

{
  "RestName": "Belini",
  "RestID": 1275,
  "SearchNotVisible": [
    "Beliny",
    "bellini"
  ],
  "RegionID": 4,
  "SubRegionID": 0,
  "CityID": 172,
  "AreaID": 5,
  "AvgPriceID": 3,
  "RestTypes": [
    58
  ],
  "FoodTypes": [
    1,
    16
  ],
  "RestSpecials": [],
  "RestProperties": [
    4
  ],
  "RestPromotions": [
    {
      "regionID": 4,
      "cityID": 172,
      "areaID": 0,
      "KosherID": 0,
      "foodTypeID": 16,
      "restTypeID": 0,
      "promotionNumber": 1,
      "isFalsePromo": false
    },
    {
      "regionID": 4,
      "cityID": 172,
      "areaID": 0,
      "KosherID": 0,
      "foodTypeID": 0,
      "restTypeID": 0,
      "promotionNumber": 1,
      "isFalsePromo": false
    },
    {
      "regionID": 4,
      "cityID": 172,
      "areaID": 0,
      "KosherID": 0,
      "foodTypeID": 1,
      "restTypeID": 0,
      "promotionNumber": 1,
      "isFalsePromo": false
    },
  "isKosher": false,
  "ReviewsScore": 3.709,
  "ReviewsAmount": 408,
  "Latitude": 32.060707,
  "Longitude": 34.765018
}

インデックスで LuceneQuery を実行する場合:

from rest in docs 
from prom in rest.RestPromotions
select new {RestID=rest.RestID,RestName=rest.RestName,PromoCityID=prom.cityID}

TotalResult は、クエリによって返されるドキュメントの実際の量よりも大きくなります。これは、インデックスによって作成されたドキュメントが重複しているためです。

私が知りたいのは、特定の LuceneQuery が生成した個別のドキュメントの実際の量を取得するオプションがあるかどうかです。

4

1 に答える 1

0

インデックス マップを次のように変更します。

from rest in docs 
select new
{
    rest.RestName,
    PromoCityID = rest.RestPromotions.Select(x=> x.cityID)
}

これにより、複数の索引エントリを持つのではなく、1 つの索引エントリで複数の用語が索引付けされます。以前と同様に、単一の用語についてクエリを実行できます。しかし、統計を見ると、 はTotalResults一致したレストランの総数を表しています。

于 2013-01-24T16:37:06.100 に答える