, 당신 인덱스에서 인덱스 문서, 문서 필드가 '등급으로 레슨 = 수학 위해 학생 선택'을 만들 수 있습니다.
귀하의 경우 3 개의 입력란 (학생, 학습 및 학년)이있는 문서가 있습니다. 그런 다음 이러한 문서로 색인을 채 웁니다.
작은 예 :
RAMDirectory ramDir = new RAMDirectory();
IndexWriter writer = new IndexWriter(ramDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29));
Document doc = new Document();
Field studentName = new Field("student", "", Field.Store.YES, Field.Index.ANALYZED);
Field lesson = new Field("lesson", "", Field.Store.YES, Field.Index.ANALYZED);
Field grade = new Field("grade","", Field.Store.YES, Field.Index.NOT_ANALYZED);
doc.Add(studentName);
doc.Add(lesson);
doc.Add(grade);
studentName.SetValue("John");
lesson.SetValue("Math");
grade.SetValue("A");
writer.AddDocument(doc);
studentName.SetValue("John");
lesson.SetValue("Chemistry");
grade.SetValue("C");
writer.AddDocument(doc);
studentName.SetValue("Julie");
lesson.SetValue("Math");
grade.SetValue("F");
writer.AddDocument(doc);
studentName.SetValue("Julie");
lesson.SetValue("Chemistry");
grade.SetValue("A");
writer.AddDocument(doc);
writer.Commit();
IndexReader reader = writer.GetReader();
IndexSearcher searcher = new IndexSearcher(reader);
PerFieldAnalyzerWrapper aw = new PerFieldAnalyzerWrapper(new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29));
aw.AddAnalyzer("grade", new KeywordAnalyzer());
Sort sort = new Sort(new SortField("grade", SortField.STRING));
QueryParser qp = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "lesson", aw);
Query q = qp.Parse("chemistry");
TopDocs docs = searcher.Search(q, null, 100, sort);
foreach (var scoreDoc in docs.ScoreDocs)
{
Console.WriteLine("Student: {0}; Lesson: {1}; Grade:{2}",
searcher.Doc(scoreDoc.doc).GetField("student").StringValue(),
searcher.Doc(scoreDoc.doc).GetField("lesson").StringValue(),
searcher.Doc(scoreDoc.doc).GetField("grade").StringValue());
}
Console.WriteLine("");
Console.WriteLine("---");
Console.WriteLine("");
q = qp.Parse("Math");
docs = searcher.Search(q, null, 100, sort);
foreach (var scoreDoc in docs.ScoreDocs)
{
Console.WriteLine("Student: {0}; Lesson: {1}; Grade:{2}",
searcher.Doc(scoreDoc.doc).GetField("student").StringValue(),
searcher.Doc(scoreDoc.doc).GetField("lesson").StringValue(),
searcher.Doc(scoreDoc.doc).GetField("grade").StringValue());
}
Console.Read();
reader.Close();
searcher.Close();
writer.Close();
인쇄 :
Student: Julie; Lesson: Chemistry; Grade:A
Student: John; Lesson: Chemistry; Grade:C
---
Student: John; Lesson: Math; Grade:A
Student: Julie; Lesson: Math; Grade:F