Indexing 瑞文德:如果我';我正在用ID创建索引,我应该指定任何索引选项吗?

Indexing 瑞文德:如果我';我正在用ID创建索引,我应该指定任何索引选项吗?,indexing,ravendb,lucene,Indexing,Ravendb,Lucene,发件人: 每个RavenDB服务器实例用于促进fast的索引 查询由全文搜索引擎Lucene提供支持 Lucene获取文档,将其分解为字段,然后拆分 在一个名为 标记化。这些标记将存储在索引中,并且 以后再查 {…} 标记化和分析过程完成后,生成的 令牌存储在索引中,现在可以使用该索引进行搜索 {…} 每个字段的默认值为FieldStorage。存储区和 字段索引。索引中的默认值 设置FieldIndexing.No会导致值在何处不可用 查询时的子句(类似于不存在于原始 投影)FieldInde

发件人:

每个RavenDB服务器实例用于促进fast的索引 查询由全文搜索引擎Lucene提供支持

Lucene获取文档,将其分解为字段,然后拆分 在一个名为 标记化。这些标记将存储在索引中,并且 以后再查

{…}

标记化和分析过程完成后,生成的 令牌存储在索引中,现在可以使用该索引进行搜索

{…}

每个字段的默认值为FieldStorage。存储区和 字段索引。索引中的默认值

设置FieldIndexing.No会导致值在何处不可用 查询时的子句(类似于不存在于原始 投影)FieldIndexing.NotAnalyzed会导致整个属性 被视为单个标记,匹配项必须精确,类似于 在此字段上使用关键字分析器。后者有助于 例如,产品ID。FieldIndexing.Analyzed允许执行以下操作 对字段执行全文搜索操作fieldindex.Default 将字段索引为单个术语(小写)。


据我所知,要创建RavenDB索引,只需指定
Map
属性,如下所示:

public class PlayersIndex : AbstractIndexCreationTask<Player>
{
    public PlayersIndex()
    {
        Map = players => from doc in players
                            select new { doc.PlayerId, doc.TeamId, doc.PositionId };
    }
}
吉姆,
根据您的需要,您不必指定任何索引选项。

Ayende,如果不分析索引字段,而不是默认使用小写KeyWordAnalyzer,索引性能是否会提高?如果是的话,增长是否完全可以忽略不计?
public class PlayersIndex : AbstractIndexCreationTask<Player>
{
    public PlayersIndex()
    {
        Map = players => from doc in players
                            select new { doc.PlayerId, doc.TeamId, doc.PositionId };

        Indexes.Add(x => x.PlayerId, FieldIndexing.NotAnalyzed);
        Indexes.Add(x => x.TeamId, FieldIndexing.NotAnalyzed);
        Indexes.Add(x => x.PositionId, FieldIndexing.NotAnalyzed);
    }
}