0
사용할 수 있지만 내 문제와 비슷한 을 찾을 수없는 몇 가지 예를 들어 Google을 많이 사용했습니다. 이것은 내 문서가 정렬되도록하기 위해 더미 필드 Foo를 값 1에 추가했기 때문에 작동하는 완전한 콘솔 예제입니다. 더미 foo 필드를 추가하고 싶지 않습니다. MailDate에 따른 가장 최신 항목을 먼저 읽을 때 을 읽으면 모든 문서를 정렬 할 수 있기를 원합니다.이 순서대로 20160202121314, 20160222151024, 20160226162344 하지만 난 20160226162344, 20160222151024처럼 역순으로, 20160202121314가젯을 추가하지 않고 MailDate에서 내 문서를 모두 정렬하는 방법 값이 1 인 필드 foo
Directory directory = FSDirectory.Open(new DirectoryInfo
(Environment.CurrentDirectory + "\\luceneIndex"));
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_29);
var writer = new IndexWriter(directory, analyzer, true,
IndexWriter.MaxFieldLength.LIMITED);
var doc = new Document();
doc.Add(new Field("MailDate", "20160202121314", Field.Store.YES,
Field.Index.ANALYZED));
doc.Add(new Field("OrgNo", "556769-6868", Field.Store.YES,
Field.Index.NOT_ANALYZED));
doc.Add(new Field("Name", "The British Food Company AB", Field.Store.YES,
Field.Index.ANALYZED));
doc.Add(new Field("Foo", "1", Field.Store.YES,
Field.Index.ANALYZED));
writer.AddDocument(doc);
doc = new Document();
doc.Add(new Field("MailDate", "20160222151024", Field.Store.YES,
Field.Index.ANALYZED));
doc.Add(new Field("OrgNo", "556559-8033", Field.Store.YES,
Field.Index.NOT_ANALYZED));
doc.Add(new Field("Name", "Gult Kort AB", Field.Store.YES,
Field.Index.ANALYZED));
doc.Add(new Field("Foo", "1", Field.Store.YES,
Field.Index.ANALYZED));
writer.AddDocument(doc);
doc = new Document();
doc.Add(new Field("MailDate", "20160226162344", Field.Store.YES,
Field.Index.ANALYZED));
doc.Add(new Field("OrgNo", "000000-0000", Field.Store.YES,
Field.Index.NOT_ANALYZED));
doc.Add(new Field("Name", "Master", Field.Store.YES, Field.Index.ANALYZED));
doc.Add(new Field("Foo", "1", Field.Store.YES, Field.Index.ANALYZED));
writer.AddDocument(doc);
writer.Dispose();
// Find all docs whose Foo contains 1, ordered by MailDate
var query = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "Foo", new
StandardAnalyzer(Version.LUCENE_29)).Parse("1");
var searcher = new IndexSearcher(directory, true);
try
{
var sort = new Sort(new SortField("MailDate", SortField.LONG, true));
var results = searcher.Search(query, null, 1000, sort);
foreach (var hit in results.ScoreDocs)
{
Document document = searcher.Doc(hit.Doc);
Console.WriteLine("\tFound match: {0}", document.Get("MailDate"));
}
}
// 토니을 원하는 읽을 때