【发布时间】:2009-08-25 14:27:05
【问题描述】:
我已按照以下来源的教程将 NHibernate.Search 集成到我的网络应用程序中:
- NHibernate.Search using Lucene.NET Full Text Index (Part 1)
- Using NHibernate.Search with ActiveRecord
我还成功地对我的数据库进行了批量索引,并且在针对 Luke 进行测试时,我可以搜索驻留在我标记为可索引的任何实体中的术语。
但是,当我尝试通过我的网络应用更新多对多实体时,我的父索引似乎没有更新。例如:
public class Books
{
HasAndBelongsToMany(typeof(Author), Table = "BookAuthor", ColumnKey = "BookId", ColumnRef = "AuthorId")]
[IndexedEmbedded]
public IList<Author> Authors
{
get { return authors; }
set { authors = value; }
}
}
public class Author
{
HasAndBelongsToMany(typeof(Book), Table = "BookAuthor", ColumnKey = "AuthorId", ColumnRef = "BookId"), Inverse=true]
[ContainedIn]
public IList<Author> Authors
{
get { return authors; }
set { authors = value; }
}
}
现在,当我尝试执行myBook.Authors.Add(Author.Create("xxx")) 之类的操作时,我可以看到我的作者索引已更新,但是图书索引(即父索引)尚未更新,搜索新添加的作者返回一个空的结果。
请注意,这只发生在处理多对多关系时。
我不知道为什么会这样。有没有其他人遇到过类似的困难?如果我能指出正确的方向,我将不胜感激,干杯。
【问题讨论】:
-
事实证明,NHibernate.Search 可能没有完全实现索引多对多关系。如果我错了,请有人纠正我。
标签: .net lucene.net castle-activerecord nhibernate.search