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();