updates query, updates index to store package file count

This commit is contained in:
Shannon
2016-06-14 11:28:19 +02:00
parent 8cf00d0420
commit 7c507d9767
4 changed files with 75 additions and 20 deletions
@@ -82,6 +82,7 @@ More information and documentation can be found on CodePlex: http://umbracoexami
<add Name="popularity" EnableSorting="true" Type="INT" />
<add Name="karma" EnableSorting="true" Type="INT" />
<add Name="downloads" EnableSorting="true" Type="INT" />
<add Name="packageFiles" Type="INT" />
<add Name="image" />
<add Name="versions" />
<add Name="compatVersions" />
@@ -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"];
@@ -20,7 +20,7 @@ namespace OurUmbraco.Our.Examine
public class ProjectNodeIndexDataService : ISimpleDataService
{
public SimpleDataSet MapProjectToSimpleDataIndexItem(IPublishedContent project, SimpleDataSet simpleDataSet, string indexType,
int karma, IEnumerable<WikiFile> files, int downloads, IEnumerable<string> compatVersions)
int karma, WikiFile[] files, int downloads, IEnumerable<string> 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<WikiFile>();
var projectFiles = allProjectWikiFiles.ContainsKey(project.Id) ? allProjectWikiFiles[project.Id].ToArray() : new WikiFile[] {};
var projectVersions = allCompatVersions.ContainsKey(project.Id) ? allCompatVersions[project.Id] : Enumerable.Empty<string>();
yield return MapProjectToSimpleDataIndexItem(project, simpleDataSet, indexType, projectKarma, projectFiles, projectDownloads, projectVersions);
@@ -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();