updates query, updates index to store package file count
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user