【问题标题】:RavenDB - setting up an index for proper collection LuceneQueryRavenDB - 为正确的集合设置索引 LuceneQuery
【发布时间】:2015-12-01 00:39:14
【问题描述】:

我有一个实体,上面有一个集合,我想为它编制索引,但我很难弄清楚如何去做。问题是我希望以与动态索引相同的方式搜索它,使用 Lucene。不过,这不是一个复杂的对象。一个简单的例子;

{
    Id: "object/id",
    Items: [
        { Id: "1", Name: "One"      },
        { Id: "2", Name: "Two"      },
        { Id: "3", Name: "Three"    }
    ]
}

而且我可以使用Lucene轻松查询内置的raven动态索引索引;

项目,名称:“一个”

这看起来干净高效,非常适合我需要做的一些事情,但我试图在我自己的索引中重现该行为并且失败得很糟糕。我告诉它索引该字段,但它仍然拒绝让我调用它;

public class Things_ByItemProperties : AbstractIndexCreationTask<Thing>
{
    public Things_ByItemProperties()
    {
        Map = things => from thing in things
                    select new
                    {
                        Id = thing.Id,
                        Items = thing.Items
                    };

        Index(n => n.Items, FieldIndexing.Analyzed);
    }
}

我知道我可以将集合的特定部分添加到索引中,像这样;

public class Things_ByItemProperties : AbstractIndexCreationTask<Thing>
{
    public Things_ByItemProperties()
    {
        Map = things => from thing in things
                    select new
                    {
                        Id = thing.Id,
                        Items = thing.Items,
                        Items_Name = this.Select( r => r.Name)
                    };

        Index(n => n.Items, FieldIndexing.Analyzed);
    }
}

但这不是我想要做的,我试图将它设置为使用 lucene 查询它,就像动态索引一样。有没有办法做到这一点?

【问题讨论】:

    标签: ravendb


    【解决方案1】:

    是的,可以做到。然而,这不是微不足道的。我建议你看看documentation。我现在正在打电话,但如果你有一些问题,我明天可以给你一个例子。同时你可以看看这个SO answer

    【讨论】:

    • 我被一个问题困住了,忘记了我需要完成这个。如果我现在奖励你信用,你还会从赏金中获得奖励积分吗?还是我需要再次花费积分才能重新打开它才能获得奖励?
    • 没问题。我认为我不会赢得赏金,但这很好。如果这有助于您将其标记为答案。你能做你最初打算做的事吗?
    • 好吧...我终于回到了这个话题。不,我不会成为“那个人”。如果我再次进行赏金,然后奖励您的答案信用,它会起作用吗?
    • 我猜是这样(请参考stackoverflow.com/help/bounty)。我认为您可以进行一日赏金,然后将赏金归因于此答案。谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多