如何以编程方式为NHibernate搜索(Lucene.net)添加索引列,而不使用FieldAttribute
我试图找出如何通过编程(即不使用如何以编程方式为NHibernate搜索(Lucene.net)添加索引列,而不使用FieldAttribute,nhibernate,search,lucene,lucene.net,Nhibernate,Search,Lucene,Lucene.net,我试图找出如何通过编程(即不使用FieldAttribute)为NHibernate搜索(Lucene.net)添加索引列 由于FieldAttribute不是自动继承的,因此我有继承问题 下面的代码说明了我想做什么 class A { [Field(Index.Tokenized)] public virtual string P1 { get { return "P1"; } } } c
FieldAttribute
)为NHibernate搜索(Lucene.net)添加索引列
由于FieldAttribute
不是自动继承的,因此我有继承问题
下面的代码说明了我想做什么
class A
{
[Field(Index.Tokenized)]
public virtual string P1
{
get
{
return "P1";
}
}
}
class B : A
{
public override string P1
{
get
{
return "P1+";
}
}
}
我期望P1的覆盖被索引,但它没有。当我检查FieldAttribute
类时,我发现它没有在AttributeUsage
属性中指定Inherited=true
然后,我向重写的属性添加了一个FieldAttribute
,但这导致NHibernate搜索退出,出现一个异常,表明具有相同键的项已添加到字典中。我想这是因为在类型链中有两个名称相同的属性,它们都带有FieldAttribute
,并且它只接受一个属性
那么,我如何通过不使用
FieldAttribute
以编程方式解决这个问题呢?最近实现了非属性映射,请看。我刚刚启动了一个类似于FluentNHibernate的Fluent NHibernate.Search映射界面,它允许您映射没有属性的实体
public class BookSearchMap : DocumentMap<Book>
{
public BookSearchMap()
{
Id(p => p.BookId).Field("BookId").Bridge().Guid();
Name("Book");
Boost(500);
Analyzer<StandardAnalyzer>();
Map(x => x.Title)
.Analyzer<StandardAnalyzer>()
.Boost(500);
Map(x => x.Description)
.Boost(500)
.Name("Description")
.Store().Yes()
.Index().Tokenized();
}
}
public类BookSearchMap:DocumentMap
{
公共图书搜索地图()
{
Id(p=>p.BookId).Field(“BookId”).Bridge().Guid();
名称(“书”);
升压(500);
分析器();
地图(x=>x.Title)
.Analyzer()
.Boost(500);
映射(x=>x.Description)
.Boost(500)
.名称(“说明”)
.Store().Yes()
.Index().Tokenized();
}
}
您应该查看托管在codeplex上的项目站点
太好了,我没有看到那个编辑,但我很高兴看到那个补丁被加入!