C# Lucene IndexWriter.AddDocument将架构更改为x64后速度变慢
我有一个asp.net核心web应用程序,它使用Lucene.net 3.0.3,目前正在使用x86体系结构:C# Lucene IndexWriter.AddDocument将架构更改为x64后速度变慢,c#,asp.net-core,.net-core,lucene,lucene.net,C#,Asp.net Core,.net Core,Lucene,Lucene.net,我有一个asp.net核心web应用程序,它使用Lucene.net 3.0.3,目前正在使用x86体系结构: <TargetFramework>net461</TargetFramework> <RuntimeIdentifier>win7-x86</RuntimeIdentifier> 更新1: 我开始通过Lucene.net进行调试,发现Lucene调用Flush时会出现暂停。因此,刷新需要很长一段时间。因为您的代码看起来不错,所以这是如何
<TargetFramework>net461</TargetFramework>
<RuntimeIdentifier>win7-x86</RuntimeIdentifier>
更新1:
我开始通过Lucene.net进行调试,发现Lucene调用Flush时会出现暂停。因此,刷新需要很长一段时间。因为您的代码看起来不错,所以这是如何尝试和调试的建议 首先,你必须把Lucene的所有信息记录在某个地方,这样你就能知道发生了什么。编写自己的,并将所有信息写入数据库。下面是一个示例,如何使用log4net编写它:
public class Log4NetInfoStream : InfoStream
{
private readonly ILog _log;
public Log4NetInfoStream()
{
_log = LogManager.GetLogger(GetType());
}
public override bool IsEnabled(string component)
{
return true;
}
public override void Message(string component, string message)
{
_log.DebugFormat("{0} :: {1}", component, message);
}
}
然后,当程序启动时,进行设置:
Lucene.Net.Util.InfoStream.Default = new Log4NetInfoStream();
之后,您将能够检查应用程序中发生了什么
如果这没有帮助,请安装并检查这15秒延迟的确切位置。我感觉这和Lucene无关,但你的机器有点问题。可能它无法访问某些东西,某些网络驱动器或代理。此工具将向您展示这一点。谢谢您的建议,我将尝试。不确定你是否看到了我的更新-当lucene调用flush时,速度会变慢。只有在调用
writer.AddDocument(document)时才会偶尔触发刷新代码>我猜Lucene会在达到某个内存大小限制后强制刷新。更新:我尝试了一些设置,将RAMBufferSizeMB设置为4(writer.SetRAMBufferSizeMB(4);
)再次加快了进程(从6分钟减少到1分42秒)。我正要建议检查writer.RamSizeInBytes()
,并可能添加手动writer.Flush(true,true)
或writer.Commit()
。
Lucene.Net.Util.InfoStream.Default = new Log4NetInfoStream();