Greaterthan没有返回Lucenequery(Ravendb)的结果



我对lucene的值大于某个值的值有一个问题查询。我的数据是动态的,因此Linq不是一个选项。

简而言之,这个问题是当我查询Greaterthan的情况下,即使我的资产。Data的价格大于价值,我将获得零结果。这也适用于Greaterthanorequals,Wherelessthan和WherelessThanoreQuals。
public class AssetDataSearch : AbstractIndexCreationTask<Asset>
{
    public AssetDataSearch()
    {
        Map = (docs) => 
            from d in docs
            select new
            {
                DataType = d.DataType,
                _ = d.SearchableParameters.Select(s => CreateField(s.Key, s.Value))
            };
    }
}
public class Test
{
    public void TestMethod()
    {
        var assets = new []
        {
            new Asset()
            {
                ID = Guid.NewGuid().ToString(),
                Data = new ListingData()
                {
                    Beds = 5,
                    Baths = 5,
                    ListingType = ListingTypeEnum.Condo,
                    Price = 100
                }
            },
            new Asset()
            {
                ID = Guid.NewGuid().ToString(),
                Data = new ListingData()
                {
                    LotSize = 55,
                    SqFeet = 89,
                    YearBuilt = 1965,
                    Price = 200
                }
            },
        };
        RavenHelper.InitTestingStore();
        using (var session = RavenDB.RavenUtility.OpenSession())
        {
            foreach(var a in assets)
                session.Store(a);
            session.SaveChanges();
            var assetsInDb = session.Advanced.LuceneQuery<Asset>().WaitForNonStaleResults().ToArray();
            var n = session.Advanced.LuceneQuery<Asset, AssetDataSearch>().WhereEquals("Price", 100).ToArray(); // returns expected results
            var gt = session.Advanced.LuceneQuery<Asset, AssetDataSearch>().WhereGreaterThan("Price", 60).ToArray(); // returns nothing
            var lt = session.Advanced.LuceneQuery<Asset, AssetDataSearch>().WhereLessThan("Price", 60).ToArray();  // returns nothing
        }
     }
 }

我在做什么错?

我在Raven Google组中找到了答案。事实证明,我必须使用与数据相同的数据类型查询。因此,在这种情况下,由于"价格"是十进制,我必须将60m传递给Where子句:

var gt = session.Advanced.LuceneQuery<Asset, AssetDataSearch>().WhereGreaterThan("Price", 60M).ToArray();

最新更新