0

ravendb でファセット機能を使用しようとしていますが、奇妙な結果が得られます。

私は次のようなドキュメントを持っています:

 {
  "SearchableModel": "42LC2RR ",
  "ModelName": "42LC2RR",
  "ModelID": 490578,
  "Name": "LG 42 Television 42LC2RR",
  "Desctription": "fffff",
  "Image": "1/4/9/8/18278941c",
  "MinPrice": 9400.0,
  "MaxPrice": 9400.0,
  "StoreAmounts": 1,
  "AuctionAmounts": 0,
  "Popolarity": 3,
  "ViewScore": 0.0,
  "ReviewAmount": 2,
  "ReviewScore": 45,
  "Sog": "E-TV",
  "SogID": 1,
  "IsModel": true,
  "Manufacrurer": "LG",
  "ParamsList": [
    "1994267",
    "46570",
    "4134",
    "4132",
    "4118",
    "46566",
    "4110",
    "180676",
    "239517",
    "750771",
    "2658507",
    "2658498",
    "46627",
    "4136",
    "169941",
    "169846",
    "145620",
    "169940",
    "141416",
    "3190767",
    "3190768",
    "144720",
    "2300706",
    "4093",
    "4009",
    "1418470",
    "179766",
    "190025",
    "170557",
    "170189",
    "43768",
    "4138",
    "67976",
    "239516",
    "3190771",
    "141195"
  ],
}

ここで、ParamList はそれぞれ製品のプロパティを表し、アプリケーションでは、各パラメーターが表すものをキャッシュに保持しています。

特定の製品を検索するときに、返されるすべての属性を数えて、検索後に各アイテムの量を追加できるようにしたいと考えています。

テレビのカテゴリでlgを検索した後、取得したい:

Param:4134 witch は LCD の代表であり、金額は :65 です。

残念ながら、私は奇妙な結果を得ています。一部のパラメーターのみがカウントされ、一部はカウントされません。結果が戻ってくる一部のサーチャーでは、金額が返されません。

RavenDB の最新の安定版を使用しています。

索引 :

from doc in docs
from param in doc.ParamsList
select new {Name=doc.Name,Description=doc.Description,SearchNotVisible = doc.SearchNotVisible,SogID=doc.SogID,Param =param}

ファセット:

 DocumentStore documentStore = new DocumentStore { ConnectionStringName = "Server" };
        documentStore.Initialize();
        using (IDocumentSession session = documentStore.OpenSession())
        {
            List<Facet> _facets = new List<Facet>
                        {
                            new Facet {Name = "Param"}

                        };

            session.Store(new FacetSetup { Id = "facets/Params", Facets = _facets });
            session.SaveChanges();
        }

使用例:

IDictionary<string, IEnumerable<FacetValue>> facets = session.Advanced.DatabaseCommands.GetFacets("FullIndexParams", new IndexQuery { Query = "Name:lg" }, "facets/Params");

私は成功せずに多くのバリエーションを試しました。

誰が私が間違っているのか考えていますか?

ありがとう

4

2 に答える 2

0

このインデックスを使用すると、問題が解決するはずです。

from doc in docs
select new {Name=doc.Name,Description=doc.Description,SearchNotVisible = doc.SearchNotVisible,SogID=doc.SogID,Param = doc.ParamsList}
于 2012-11-06T21:37:46.477 に答える