我的搜索出现问题,无法返回我期望的结果。
我尝试在我的索引上运行卢克,但它说它已锁定,我需要强制解锁它(尽管我不是绝地/西斯)
我尝试删除索引文件夹并运行我的 recreate-indicies 应用程序,但该文件夹已被锁定。使用unlocker我发现有大约100个w3wp.exe条目(相同的PID,不同的句柄)在索引上有锁。
这是怎么回事?
我在 NHibernate 配置中执行此操作:
c.SetListener(ListenerType.PostUpdate, new FullTextIndexEventListener());
c.SetListener(ListenerType.PostInsert, new FullTextIndexEventListener());
c.SetListener(ListenerType.PostDelete, new FullTextIndexEventListener());
这是我查询索引的唯一地方:
var fullTextSession = NHibernate.Search.Search.CreateFullTextSession(this.unitOfWork.Session);
var fullTextQuery = fullTextSession.CreateFullTextQuery(query, typeof (Person));
fullTextQuery.SetMaxResults(100);
return fullTextQuery.List<Person>();
这是怎么回事?我究竟做错了什么?
Thanks
Lucene.Net 索引仅阻止并发write对索引的操作。您可以拥有任意数量的线程从索引中搜索/读取,并且它们不会阻塞 - 无论是彼此阻塞还是任何人执行写入操作,但是如果您有两个线程同时对索引执行写入操作,则有他们中的一个会阻挡另一个的机会。
如果 lucene 告诉你你的索引被锁定,那么这意味着要么有人当前正在写入索引,要么(这听起来更有可能)正在写入索引的东西在写入过程中被杀死,因此无法删除锁。您应该确保在写入索引后立即正确处理所有写入索引的 Lucene 对象。
要手动删除锁定,您需要在 Lucene 目录中删除一个 .lock 文件(我的 Lucene 大书目前不在我身边,所以我不知道它到底在哪里,但是搜索一下Lucene目录中的“lock”或“.lock”应该可以找到它)
w3wp.exe 在此目录上拥有的句柄可能是从 lucene 索引读取的线程所拥有的句柄 - 尽管这些句柄会阻止您删除该目录,但它们不应阻止您搜索或写入索引。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)