让我解释一下我的问题。我正在使用 Lucene 在 asp.net 网页中搜索和显示结果。当我搜索时,Lucene 会显示与我的搜索相关的所有记录。例如,我有 5000 条名为 John 的记录。如果我键入 John,它将显示所有这 5000 条记录。我想根据其他一些属性来限制这 5000 条记录。我有四个属性,即名字、姓氏、出生日期和 ID。在这 5000 条记录中,我希望它只显示用户输入的 DOB 记录。这意味着只显示 john 的出生日期为 5/12/1998 的记录。这会将结果限制为大约 50 条记录。完成后,我想搜索所有具有相同 ID 的字段,然后显示这些记录。最后,我将拥有给定 DOB 和相同 ID 的 John 的记录。
注意:按 DOB 过滤是出于安全目的。
以下是我的搜索代码。
List<SearchResults> Searchresults = new List<SearchResults>();
string indexFileLocation = @"C:\o";
Lucene.Net.Store.Directory dir = Lucene.Net.Store.FSDirectory.GetDirectory(indexFileLocation);
string[] searchfields = new string[] { "fname", "lname", "dob", "id"};
IndexSearcher indexSearcher = new IndexSearcher(dir);
var hits = indexSearcher.Search(QueryMaker(searchString, searchfields));
for (int i = 0; i < hits.Length(); i++)
{
SearchResults result = new SearchResults();
result.fname = hits.Doc(i).GetField("fname").StringValue();
result.lname = hits.Doc(i).GetField("lname").StringValue();
result.dob = hits.Doc(i).GetField("dob").StringValue();
result.id = hits.Doc(i).GetField("id").StringValue();
Searchresults.Add(result);
}
请让我知道,如果你有任何问题。