C# Lucene IndexWriter.AddDocument将架构更改为x64后速度变慢

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时会出现暂停。因此,刷新需要很长一段时间。因为您的代码看起来不错,所以这是如何

我有一个asp.net核心web应用程序,它使用Lucene.net 3.0.3,目前正在使用x86体系结构:

<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();