Я использую lucene.net для поиска деталей счета продукта. полностью в этом 500k (документе) записи & 6 полей, добавленных в созданные документы.lucene.net медленный при поиске только 500k записей
Я использую версию lucene.net 3.0.3.0.
public DataSet Search(string criterion, string term)
{
string indexPath = System.Configuration.ConfigurationManager.AppSettings["LuceneIndexPathBillSearch"];
Lucene.Net.Store.Directory directory = FSDirectory.Open(new DirectoryInfo(indexPath));
Analyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30);
IndexReader indexReader = IndexReader.Open(directory, true);
Searcher searcher = new IndexSearcher(indexReader);
var queryParser = new QueryParser(Lucene.Net.Util.Version.LUCENE_30, criterion, analyzer);
queryParser.AllowLeadingWildcard = true;
var query = queryParser.Parse(term.ToLower() + "*");
var sort = new Sort(new SortField(term, SortField.STRING, false));
TopDocs resultDocs = searcher.Search(query, null, indexReader.MaxDoc, sort);
var topDocs = resultDocs.ScoreDocs;
DataSet Product= new DataSet();
DataTable dt = new DataTable();
dt.Columns.Add("BillId");
dt.Columns.Add("BillNo");
dt.Columns.Add("BillDate");
dt.Columns.Add("BillUniqueNo");
dt.Columns.Add("ProductName");
dt.Columns.Add("ProductCode");
dt.Columns.Add("Status");
dt.Columns.Add("IsServiceOrder");
DataRow row = null;
foreach (var hit in topDocs)
{
var documentFromSerach = searcher.Doc(hit.Doc);
row = dt.NewRow();
row["BillId"] = documentFromSerach.Get("BillId");
row["BillNo"] = documentFromSerach.Get("BillNo");
row["BillDate"] = documentFromSerach.Get("BillDate");
row["BillUniqueNo"] = documentFromSerach.Get("BillUniqueNo");
row["ProductName"] = documentFromSerach.Get("ProductName");
row["ProductCode"] = documentFromSerach.Get("ProductCode");
row["status"] = documentFromSerach.Get("status");
row["IsServiceOrder"] = documentFromSerach.Get("IsServiceOrder");
dt.Rows.Add(row);
}
Product.Tables.Add(dt);
return Product;
}
Что я здесь делаю неправильно? почему занимает от 10 до 15 секунд поиск текста из созданного индекса?