public FacetedDocument(IndexDocumentData data, IEnumerable <Field> existingFacets) { Data = data; Dirty = IsNew = true; _facets = ParseFacets(existingFacets); }
public FacetedDocument(IndexDocumentData data) { Data = data; Dirty = IsNew = true; _facets = new HashSet <string>(); }
private static void WhatIf_ApplyUpdates(List <int> packageKeys, Func <int, IndexDocumentData> fetch, Lucene.Net.Store.Directory directory, TextWriter log) { log.WriteLine("[WhatIf] updating..."); foreach (int packageKey in packageKeys) { IndexDocumentData documentData = fetch(packageKey); log.WriteLine("{0} {1} {2}", packageKey, documentData.Package.PackageRegistration.Id, documentData.Package.Version); } }
/* Open questions: 1. Should we propogate curated feed data to V3 ? 2. Should the Package Key added to Lucene ? Is it used as high water mark or anything ? 3. How to add "CatalogEntry", "TenantId", "Visibility" values. 4. Where does the below fields that show up in search query come from : "@id": "http://api.nuget.org/v3/registration0/nunit.runners/2.6.4.json", "@type": "Package", "registration": "http://api.nuget.org/v3/registration0/nunit.runners/index.json", */ private static Document CreateLuceneDocument(IndexDocumentData data) { Package package = data.Package; Document doc = new Document(); // Query Fields float titleBoost = 3.0f; float idBoost = 2.0f; if (package.Tags == null) { titleBoost += 0.5f; idBoost += 0.5f; } string title = package.Title ?? package.PackageRegistration.Id; Add(doc, "Id", package.PackageRegistration.Id, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS, idBoost); Add(doc, "IdAutocomplete", package.PackageRegistration.Id, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.NO); Add(doc, "IdAutocompletePhrase", "/ " + package.PackageRegistration.Id, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS); Add(doc, "TokenizedId", package.PackageRegistration.Id, Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS, idBoost); Add(doc, "ShingledId", package.PackageRegistration.Id, Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS, idBoost); Add(doc, "Version", package.Version, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS, idBoost); Add(doc, "Title", title, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS, titleBoost); Add(doc, "Tags", package.Tags, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS, 1.5f); Add(doc, "Description", package.Description, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS); Add(doc, "Authors", package.FlattenedAuthors, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS); Add(doc, "Owners", PackageJson.ToJson_Owners(package.PackageRegistration.Owners).ToString(), Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS); Add(doc, "Summary", package.Summary, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS); Add(doc, "IconUrl", package.IconUrl, Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS); Add(doc, "ProjectUrl", package.ProjectUrl, Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS); Add(doc, "MinClientVersion", package.MinClientVersion, Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS); Add(doc, "ReleaseNotes", package.ReleaseNotes, Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS); Add(doc, "Copyright", package.Copyright, Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS); Add(doc, "Language", package.Language, Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO); Add(doc, "LicenseUrl", package.LicenseUrl, Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS); Add(doc, "RequiresLicenseAcceptance", package.RequiresLicenseAcceptance.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS); Add(doc, "PackageHash", package.Hash, Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO); Add(doc, "PackageHashAlgorithm", package.HashAlgorithm, Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO); Add(doc, "PackageSize", package.PackageFileSize.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO); doc.Add(new NumericField("PublishedDate", Field.Store.YES, true).SetIntValue(int.Parse(package.Published.ToString("yyyyMMdd")))); DateTime lastEdited = (DateTime)(package.LastEdited ?? package.Published); doc.Add(new NumericField("EditedDate", Field.Store.YES, true).SetIntValue(int.Parse(lastEdited.ToString("yyyyMMdd")))); string displayName = String.IsNullOrEmpty(package.Title) ? package.PackageRegistration.Id: package.Title; displayName = displayName.ToLower(CultureInfo.CurrentCulture); Add(doc, "DisplayName", displayName, Field.Store.NO, Field.Index.NOT_ANALYZED, Field.TermVector.NO); string packageUrl = string.Format(_packageTemplate, package.PackageRegistration.Id.ToLowerInvariant(), package.Version.ToLowerInvariant()); Add(doc, "Url", packageUrl.ToString(), Field.Store.YES, Field.Index.NO, Field.TermVector.NO); Add(doc, "Listed", package.Listed.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO); Add(doc, "FlattenedDependencies", package.FlattenedDependencies, Field.Store.YES, Field.Index.NO, Field.TermVector.NO); Add(doc, "Dependencies",PackageJson.ToJson_PackageDependencies(package.Dependencies).ToString(), Field.Store.YES, Field.Index.NO, Field.TermVector.NO); Add(doc, "SupportedFrameworks", PackageJson.ToJson_SupportedFrameworks(package.SupportedFrameworks).ToString(), Field.Store.YES, Field.Index.NO, Field.TermVector.NO); // The following fields are added for back compatibility with the V2 gallery // Ques: Should any specific format need to be applied for ToString on these DateTime (like how we have in catalog entry). Add(doc, "OriginalVersion", package.Version.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO); Add(doc, "OriginalCreated", package.Created.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO); Add(doc, "OriginalLastEdited", package.LastEdited.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO); Add(doc, "OriginalPublished", package.Published.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO); Add(doc, "LicenseNames", package.LicenseNames, Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO); Add(doc, "LicenseReportUrl", package.LicenseReportUrl, Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO); doc.Boost = DetermineLanguageBoost(package.PackageRegistration.Id, package.Language); return doc; }
public FacetedDocument(Document doc) { Data = IndexDocumentData.FromDocument(doc); Dirty = IsNew = false; _facets = ParseFacets(doc.GetFields(Facets.FieldName)); }