2010-03-03 63 views
0

ASP.NET新手在这里ASP.NET + Lucene网站的奇怪错误

我编写了一个ASP.NET网站,并运行win'08(远程托管)。应用程序查询11个非常大的Lucene索引(每个〜100GB)。我在Page_load()上打开IndexSearchers并保持打开状态,并根据用户输入的关键字将它们传递给查询方法。

我可以在VS-2008中使用RDC并运行该网站。我可以通过网络从我的桌面部署和访问它。出于一些奇怪的原因,我的一些队友在运行同一站点时遇到问题 - 他们可以很好地登录,因此访问不成问题 - 但应用程序只是“挂起“当他们进行一些搜索时。

任何建议我应该在哪里看?这可能是多个搜索者同时查询的问题吗?有任何想法吗?

回答

0

听起来像锁定问题。

您不能在Web应用程序中持有任何资源超过需求(请求)。

所以我相信你不应该容纳Lucene索引。

另请检查站点运行的帐户的文件系统权限。

此外,你应该检查事件日志,你可能会有一些警告或无声的错误。

+0

现在我有我的搜索方法都在一个静态类,并调用方法就像公共静态DoSearch(参考IndexSearcher,字符串查询) 而是你建议我在DoSearch()打开一个Indexsearcher并关闭它? – Mikos 2010-03-03 04:35:40

+0

首先你需要隔离问题。确保Lucene导致这种情况。但是,当然,您需要关闭这些索引,因为“多索引编写者或读者可以尝试同时编辑lucene索引文件(重要的是要关闭索引编写器/阅读器,以便释放文件锁定)。 – 2010-03-03 04:45:38

+0

我确实检查过并设置了要测量的计时器,但没有出现查询需要很长时间(几毫秒到1秒)...但绑定到gridview似乎花费了过多的时间。 在ASP.NET上使用Lucene有什么最佳实践吗?以下是我在搜索SO和Lucene站点时收集的内容: 1.在PageLoad()上打开IndexSearchers并在用户会话期间保持它们。 2.打开搜索器IndexReader = true(我的编写者在单独的守护进程计划任务进程中) 3.使用HitsCollector而不是Hits类。 4.将索引移动到多个物理磁盘上(我有2) – Mikos 2010-03-03 18:53:01