protected static void UpdateIndexRefreshTime() { var metadataPath = LuceneCommon.GetIndexMetadataPath(); if (File.Exists(metadataPath)) { File.SetCreationTimeUtc(metadataPath, DateTime.UtcNow); } }
private SearchResults SearchCore(SearchFilter searchFilter) { // Get index timestamp DateTime timestamp = File.GetLastWriteTimeUtc(LuceneCommon.GetIndexMetadataPath()); int numRecords = searchFilter.Skip + searchFilter.Take; var searcher = new IndexSearcher(_directory, readOnly: true); var query = ParseQuery(searchFilter.SearchTerm); // IF searching by relevance, boost scores by download count. if (searchFilter.SortOrder == SortOrder.Relevance) { var downloadCountBooster = new FieldScoreQuery("DownloadCount", FieldScoreQuery.Type.INT); query = new CustomScoreQuery(query, downloadCountBooster); } string filterTerm; if (SemVerLevelKey.ForSemVerLevel(searchFilter.SemVerLevel) == SemVerLevelKey.SemVer2) { filterTerm = searchFilter.IncludePrerelease ? "IsLatestSemVer2" : "IsLatestStableSemVer2"; } else { filterTerm = searchFilter.IncludePrerelease ? "IsLatest" : "IsLatestStable"; } Query filterQuery = new TermQuery(new Term(filterTerm, Boolean.TrueString)); if (searchFilter.CuratedFeed != null) { var feedFilterQuery = new TermQuery(new Term("CuratedFeedKey", searchFilter.CuratedFeed.Key.ToString(CultureInfo.InvariantCulture))); BooleanQuery conjunctionQuery = new BooleanQuery(); conjunctionQuery.Add(filterQuery, Occur.MUST); conjunctionQuery.Add(feedFilterQuery, Occur.MUST); filterQuery = conjunctionQuery; } Filter filter = new QueryWrapperFilter(filterQuery); var results = searcher.Search(query, filter: filter, n: numRecords, sort: new Sort(GetSortField(searchFilter))); if (results.TotalHits == 0 || searchFilter.CountOnly) { return(new SearchResults(results.TotalHits, timestamp)); } var packages = results.ScoreDocs .Skip(searchFilter.Skip) .Select(sd => PackageFromDoc(searcher.Doc(sd.Doc))) .ToList(); return(new SearchResults( results.TotalHits, timestamp, packages.AsQueryable())); }
public virtual Task <DateTime?> GetLastWriteTime() { var metadataPath = LuceneCommon.GetIndexMetadataPath(); if (!File.Exists(metadataPath)) { return(Task.FromResult <DateTime?>(null)); } return(Task.FromResult <DateTime?>(File.GetLastWriteTimeUtc(metadataPath))); }
public virtual DateTime?GetLastWriteTime() { var metadataPath = LuceneCommon.GetIndexMetadataPath(); if (!File.Exists(metadataPath)) { return(null); } return(File.GetLastWriteTimeUtc(metadataPath)); }
protected internal static bool IndexRequiresRefresh() { var metadataPath = LuceneCommon.GetIndexMetadataPath(); if (File.Exists(metadataPath)) { var creationTime = File.GetCreationTimeUtc(metadataPath); return((DateTime.UtcNow - creationTime) > IndexRecreateInterval); } // If we've never created the index, it needs to be refreshed. return(true); }
protected internal virtual void UpdateLastWriteTime() { var metadataPath = LuceneCommon.GetIndexMetadataPath(); if (!File.Exists(metadataPath)) { // Create the index and add a timestamp to it that specifies the time at which it was created. File.WriteAllBytes(metadataPath, new byte[0]); } else { File.SetLastWriteTimeUtc(metadataPath, DateTime.UtcNow); } }