From 7c507d9767d2ef4961ae81ddaddece545c1966bf Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 14 Jun 2016 11:28:19 +0200 Subject: [PATCH] updates query, updates index to store package file count --- OurUmbraco.Site/config/ExamineIndex.config | 1 + .../Our/CustomHandlers/ProjectIndexer.cs | 2 +- .../Examine/ProjectNodeIndexDataService.cs | 9 +- .../Services/PackageRepositoryService.cs | 83 +++++++++++++++---- 4 files changed, 75 insertions(+), 20 deletions(-) diff --git a/OurUmbraco.Site/config/ExamineIndex.config b/OurUmbraco.Site/config/ExamineIndex.config index cb6b3dca..bd4a21d5 100644 --- a/OurUmbraco.Site/config/ExamineIndex.config +++ b/OurUmbraco.Site/config/ExamineIndex.config @@ -82,6 +82,7 @@ More information and documentation can be found on CodePlex: http://umbracoexami + diff --git a/OurUmbraco/Our/CustomHandlers/ProjectIndexer.cs b/OurUmbraco/Our/CustomHandlers/ProjectIndexer.cs index c869d871..83d14706 100644 --- a/OurUmbraco/Our/CustomHandlers/ProjectIndexer.cs +++ b/OurUmbraco/Our/CustomHandlers/ProjectIndexer.cs @@ -63,7 +63,7 @@ namespace OurUmbraco.Our.CustomHandlers }; var karma = Utils.GetProjectTotalVotes(content.Id); - var files = WikiFile.CurrentFiles(content.Id); + var files = WikiFile.CurrentFiles(content.Id).ToArray(); var compatVersions = Utils.GetProjectCompatibleVersions(content.Id); var simpleDataIndexer = (SimpleDataIndexer)ExamineManager.Instance.IndexProviderCollection["projectIndexer"]; diff --git a/OurUmbraco/Our/Examine/ProjectNodeIndexDataService.cs b/OurUmbraco/Our/Examine/ProjectNodeIndexDataService.cs index e717b815..44c16310 100644 --- a/OurUmbraco/Our/Examine/ProjectNodeIndexDataService.cs +++ b/OurUmbraco/Our/Examine/ProjectNodeIndexDataService.cs @@ -20,7 +20,7 @@ namespace OurUmbraco.Our.Examine public class ProjectNodeIndexDataService : ISimpleDataService { public SimpleDataSet MapProjectToSimpleDataIndexItem(IPublishedContent project, SimpleDataSet simpleDataSet, string indexType, - int karma, IEnumerable files, int downloads, IEnumerable compatVersions) + int karma, WikiFile[] files, int downloads, IEnumerable compatVersions) { simpleDataSet.NodeDefinition.NodeId = project.Id; simpleDataSet.NodeDefinition.Type = indexType; @@ -47,7 +47,7 @@ namespace OurUmbraco.Our.Examine { var image = files.FirstOrDefault(x => x.FileType == "screenshot"); if (image != null) - imageFile = image.Path; + imageFile = image.Path; } //Clean up version data before its included in the index int o; @@ -68,6 +68,9 @@ namespace OurUmbraco.Our.Examine simpleDataSet.RowData.Add("downloads", downloads.ToString()); simpleDataSet.RowData.Add("image", imageFile); + var packageFiles = files.Count(x => x.FileType == "package"); + simpleDataSet.RowData.Add("packageFiles", packageFiles.ToString()); + //now we need to add the versions and compat versions // first, this is the versions that the project has files tagged against simpleDataSet.RowData.Add("versions", string.Join(",", versions)); @@ -98,7 +101,7 @@ namespace OurUmbraco.Our.Examine var projectDownloads = allProjectDownloads.ContainsKey(project.Id) ? allProjectDownloads[project.Id] : 0; var projectKarma = allProjectKarma.ContainsKey(project.Id) ? allProjectKarma[project.Id] : 0; - var projectFiles = allProjectWikiFiles.ContainsKey(project.Id) ? allProjectWikiFiles[project.Id] : Enumerable.Empty(); + var projectFiles = allProjectWikiFiles.ContainsKey(project.Id) ? allProjectWikiFiles[project.Id].ToArray() : new WikiFile[] {}; var projectVersions = allCompatVersions.ContainsKey(project.Id) ? allCompatVersions[project.Id] : Enumerable.Empty(); yield return MapProjectToSimpleDataIndexItem(project, simpleDataSet, indexType, projectKarma, projectFiles, projectDownloads, projectVersions); diff --git a/OurUmbraco/Repository/Services/PackageRepositoryService.cs b/OurUmbraco/Repository/Services/PackageRepositoryService.cs index 2ff9d417..e266dea5 100644 --- a/OurUmbraco/Repository/Services/PackageRepositoryService.cs +++ b/OurUmbraco/Repository/Services/PackageRepositoryService.cs @@ -155,38 +155,89 @@ namespace OurUmbraco.Repository.Services || Regex.IsMatch(query, "^\'.*?\'$"); //node name exactly boost x 10 - sb.Append("nodeName:"); + sb.Append("(nodeName:"); if (surroundedByQuotes == false) sb.Append("\""); sb.Append(query.ToLower()); if (surroundedByQuotes == false) sb.Append("\""); - sb.Append("^10.0 "); + sb.Append(")^10.0 "); - //node name normally with wildcards - sb.Append(" nodeName:"); - sb.Append("("); - foreach (var w in querywords) + //node name normally + if (!surroundedByQuotes) { - sb.Append(w.ToLower()); - sb.Append("* "); + sb.Append("(nodeName:"); + foreach (var w in querywords) + { + sb.Append(w.ToLower()); + } + sb.Append(")^5 "); + + //node name normally with wildcards + sb.Append("(nodeName:"); + foreach (var w in querywords) + { + sb.Append(w.ToLower()); + sb.Append("*"); + } + sb.Append(") "); + + //node name normally with fuzzy + sb.Append("(nodeName:"); + foreach (var w in querywords) + { + sb.Append(w.ToLower()); + } + sb.Append("~0.8) "); } - sb.Append(") "); //other fields to search that are less important var fields = new[] { "body" }; foreach (var f in fields) { - //additional fields normally + //additional fields exactly + sb.Append("("); sb.Append(f); sb.Append(":"); - sb.Append("("); - foreach (var w in querywords) + if (surroundedByQuotes == false) sb.Append("\""); + sb.Append(query.ToLower()); + if (surroundedByQuotes == false) sb.Append("\""); + sb.Append(")^0.7 "); + + //additional fields normally + if (!surroundedByQuotes) { - sb.Append(w.ToLower()); + sb.Append("("); + sb.Append(f); + sb.Append(":"); + foreach (var w in querywords) + { + sb.Append(w.ToLower()); + } + sb.Append(")^0.5 "); + + //additional fields fuzzy + sb.Append("("); + sb.Append(f); + sb.Append(":"); + foreach (var w in querywords) + { + sb.Append(w.ToLower()); + } + //boost less for these fields + sb.Append("~0.8)^0.2 "); + + //additional fields wildcard + sb.Append("("); + sb.Append(f); + sb.Append(":"); + foreach (var w in querywords) + { + sb.Append(w.ToLower()); + sb.Append("*"); + } + //boost less for these fields with wildcard + sb.Append(")^0.1 "); } - //boost less if found in body - sb.Append("^0.5)"); - sb.Append(" "); } return sb.ToString();