Как читать несколько файлов .cfs из lucene.чистые индексные файлы на языке Си#
Ниже блок кода предназначен для создания индекса. Он создает дополнительный файл .cfs всякий раз, когда я выполняю код.
using (var directory = GetDirectory()) using (var analyzer = GetAnalyzer()) using (var writer = new IndexWriter(directory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED)) { foreach (var pg in lstPage) { try { var document = AddDoc(pg); if (isScheduled.ToUpper() != "T") { Term trm = new Term(pg.Id.ToString(), "Id"); writer.DeleteDocuments(trm); } writer.AddDocument(document); } catch (Exception exIndx) { sbLog.AppendLine("exIndx->" + exIndx); } } }
Таким образом, проблема здесь заключается в том, что функция поиска должна применять поиск по нескольким файлам .cfs, но этого не происходит. ниже приведен код поиска
static List<Page> Search(string keywords, int limit, out int count) { using (var directory = GetDirectory()) using (var searcher = new IndexSearcher(directory)) { var query = GetQuery(keywords); var sort = GetSort(); var filter = GetFilter(); var docs = searcher.Search(query, filter, limit, sort); count = docs.TotalHits; var products = new List<Page>(); foreach (var scoreDoc in docs.ScoreDocs) { var doc = searcher.Doc(scoreDoc.Doc); var product = new Page { Id = int.Parse(doc.Get("Id")), name = doc.Get("url").Substring(doc.Get("url").LastIndexOf("/") + 1, doc.Get("url").Length - doc.Get("url").LastIndexOf("/") - 1), data = doc.Get("data"), url = doc.Get("url") }; if (!products.Any(x => x.Id == product.Id)) products.Add(product); } return products; } }
Что я уже пробовал:
Невозможно применить поиск по нескольким файлам .cfs, так как каждый файл .cfs имеет свой набор ключевых слов для поиска. Пожалуйста, помогите мне с этим. Спасибо