summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDon Scorgie <dscorgie@src.gnome.org>2006-02-27 19:52:35 +0000
committerDon Scorgie <dscorgie@src.gnome.org>2006-02-27 19:52:35 +0000
commitcac4dddd42685cad2738c9ec70f596de825293dc (patch)
treec8e4a15719bef7374b9bcd354219f4260c13c224
parentcf8f42504efb477ffe59a2709a45124f20e2d547 (diff)
downloadyelp-cac4dddd42685cad2738c9ec70f596de825293dc.tar.gz
While slow searching, sort the results to provide some sanity
* stylesheets/search2html.xsl: * src/yelp-search-pager.c: While slow searching, sort the results to provide some sanity
-rw-r--r--ChangeLog4
-rw-r--r--src/yelp-search-pager.c22
-rw-r--r--stylesheets/search2html.xsl5
3 files changed, 26 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index efd3a4d8..19334dac 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2006-02-27 Don Scorgie <dscorgie@cvs.gnome.org>
+ * stylesheets/search2html.xsl:
+ * src/yelp-search-pager.c:
+ While slow searching, sort the results to provide some sanity
+
* src/yelp-search-pager.c:
Look for spaces when processing man page search results
This stops (at least) FreeBSD off-by-1 errors (bug #331828)
diff --git a/src/yelp-search-pager.c b/src/yelp-search-pager.c
index a77b2b3d..58e46a0c 100644
--- a/src/yelp-search-pager.c
+++ b/src/yelp-search-pager.c
@@ -120,6 +120,7 @@ struct _SearchContainer {
gint search_status;
gchar * elem_type;
GSList * elem_stack;
+ gfloat score;
};
static void search_pager_class_init (YelpSearchPagerClass *klass);
@@ -988,7 +989,17 @@ void s_characters(void * data,
c->snippet = g_strndup (g_utf8_casefold ((gchar *) ch, len),
len);
c->result_subsection = g_strdup (c->current_subsection);
-
+
+ if (g_str_equal(c->elem_type, "primary")) {
+ c->score = 1.0;
+ } else if (g_str_equal (c->elem_type, "secondary")) {
+ c->score = 0.9;
+ } else if (g_str_equal (c->elem_type, "title") ||
+ g_str_equal (c->elem_type, "titleabbrev")) {
+ c->score = 0.8;
+ } else {
+ c->score = 0.5;
+ }
}
i++;
s_term = c->search_term[i];
@@ -1136,7 +1147,7 @@ slow_search_setup (YelpSearchPager *pager)
container->base_filename = g_strdup (realfname);
container->entities = g_hash_table_new (g_str_hash, g_str_equal);
container->doc_title = g_strdup ((gchar *) omf_title->stringval);
-
+ container->score=-1;
ptr = g_strrstr (container->base_filename, "/");
@@ -1338,7 +1349,8 @@ search_parse_result (YelpSearchPager *pager, SearchContainer *c)
BAD_CAST "result", NULL);
xmlSetProp (child, BAD_CAST "uri", BAD_CAST new_uri);
xmlSetProp (child, BAD_CAST "title", BAD_CAST g_strstrip (c->doc_title));
-
+ xmlSetProp (child, BAD_CAST "score",
+ BAD_CAST g_strdup_printf ("%f", c->score));
/* Fix up the snippet to show the break_term in bold */
xmldoc = g_strdup_printf ("<snippet>%s</snippet>",
search_clean_snippet (c->snippet, c->search_term));
@@ -1401,6 +1413,8 @@ process_man_result (YelpSearchPager *pager, gchar *result, gchar **terms)
xmlNewChild (child, NULL, BAD_CAST "snippet",
BAD_CAST desc);
+ xmlNewChild (child, NULL, BAD_CAST "score",
+ BAD_CAST "0.1");
g_strfreev (line);
g_free (before);
}
@@ -1473,6 +1487,8 @@ process_info_result (YelpSearchPager *pager, gchar *result, gchar **terms)
xmlNewChild (child, NULL, BAD_CAST "snippet",
BAD_CAST desc);
+ xmlNewChild (child, NULL, BAD_CAST "score",
+ BAD_CAST "0.05");
g_strfreev (line);
g_free (title);
}
diff --git a/stylesheets/search2html.xsl b/stylesheets/search2html.xsl
index a653e110..9b2de801 100644
--- a/stylesheets/search2html.xsl
+++ b/stylesheets/search2html.xsl
@@ -108,8 +108,9 @@
<div class="content">
<dl>
<xsl:for-each select="result[@uri != '']">
-<!-- Don't sort. Program deals with that. -->
-<!-- <xsl:sort order="descending" data-type="number" select="normalize-space(@score)"/> -->
+ <!-- Don't sort. Program deals with that. We do however
+ need it for slow search-->
+ <xsl:sort order="descending" data-type="number" select="normalize-space(@score)"/>
<xsl:apply-templates select="."/>
</xsl:for-each>
</dl>