SimpleLucene问题(仍然支持,优势或内存流,解释一个例子)

本文关键字:解释 一个 问题 支持 SimpleLucene 内存 | 更新日期: 2023-09-27 18:24:08

我使用的是SimpleLucene v1.0和Lucene.Net v2.9.2.2.

我目前正在浏览这些例子,遇到了一些问题。

第一个问题是SimpleLucene的nuget包不起作用。当你试图将它与他们的示例一起使用时,它不会编译,因为它正在寻找其他版本。这导致我不得不获取源代码,并提取给出上述版本的.dll。

我相信Lucene.Net v2.9.2.2不是最新的版本。这一点以及他们没有纠正nuget问题的事实让我怀疑他们是否仍在开发它

在他们的第一个例子中,他们提到可以使用MemoryIndexWriter。

创建IIndexWriter。对于文件系统索引,可以使用DirectoryIndexWriter。必须指定索引位置。注:AMemoryIndexWriter可以在测试项目中找到(用于写入内存索引)

我一直在看测试文件,但不确定它是如何工作的。我想知道是否有人可以解释使用MemoryIndexWriter相对于只存储它的优势,并提供一个如何使用它的简单示例。

他们有

 public ProductQuery WithKeywords(string keywords)
        {
            if (!string.IsNullOrEmpty(keywords))
            {
                string[] fields = { "name", "description" };
                var parser = new MultiFieldQueryParser(Version.LUCENE_29,
                    fields, new StandardAnalyzer(Version.LUCENE_29));
                Query multiQuery = parser.Parse(keywords);
                this.AddQuery(multiQuery);
            }
            return this;
        }

有人能向我解释一下fields数组的作用吗。我不明白它的用途。

这个库也为使用Lucene的版本节省了很多时间。当SimpleLucene说它将Lucene代码封装到更简单的调用中时,我也开始研究它了。

SimpleLucene问题(仍然支持,优势或内存流,解释一个例子)

MemoryIndexWriter将把整个索引保存在RAM中。所以一旦你的程序退出,你就失去了索引。我想一个优势是索引和搜索速度的提高。DirectoryIndexWriter将索引保存到磁盘,因此速度会较慢,但您有一个永久索引。至于哪一个更好,这取决于你的特定要求

字段数组指定要搜索文档的哪些字段。请注意,它们使用的是MultiFieldQueryParser。

我个人从未使用过SimpleLucene,所以我对此没有任何看法。我确实觉得Lucene API不是最好的,但如果你直接使用它,你可能会比使用包装器更好地了解Lucene的内部工作原理。