gpt4 book ai didi

sorting - Lucene.NET - 按 int 排序

转载 作者:行者123 更新时间:2023-12-02 06:14:06 27 4
gpt4 key购买 nike

在最新版本的 Lucene(或 Lucene.NET)中,按排序顺序获取搜索结果的正确方法是什么?

我有一个这样的文档:

var document = new Lucene.Document();
document.AddField("Text", "foobar");
document.AddField("CreationDate", DateTime.Now.Ticks.ToString()); // store the date as an int

indexWriter.AddDocument(document);

现在我想要进行搜索并按最新顺序获取结果。

如何执行按 CreationDate 对结果进行排序的搜索?我看到的所有文档都是针对使用现已弃用的 API 的旧 Lucene 版本的。

最佳答案

在对 API 进行了一些研究和摸索之后,我终于找到了一些未弃用的 API(从 v2.9 和 v3.0 开始),它们允许您按日期订购:

// Find all docs whose .Text contains "hello", ordered by .CreationDate.
var query = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "Text", new StandardAnalyzer()).Parse("hello");
var indexDirectory = FSDirectory.Open(new DirectoryInfo("c:\\foo"));
var searcher = new IndexSearcher(indexDirectory, true);
try
{
var sort = new Sort(new SortField("CreationDate", SortField.LONG));
var filter = new QueryWrapperFilter(query);
var results = searcher.Search(query, , 1000, sort);
foreach (var hit in results.scoreDocs)
{
Document document = searcher.Doc(hit.doc);
Console.WriteLine("\tFound match: {0}", document.Get("Text"));
}
}
finally
{
searcher.Close();
}

注意我正在使用 LONG 比较对创建日期进行排序。这是因为我将创建日期存储为 DateTime.Now.Ticks,它是一个 System.Int64,或者在 C# 中为 long。

关于sorting - Lucene.NET - 按 int 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685490/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com