diff options
author | Don Scorgie <dscorgie@src.gnome.org> | 2006-02-27 19:52:35 +0000 |
---|---|---|
committer | Don Scorgie <dscorgie@src.gnome.org> | 2006-02-27 19:52:35 +0000 |
commit | cac4dddd42685cad2738c9ec70f596de825293dc (patch) | |
tree | c8e4a15719bef7374b9bcd354219f4260c13c224 | |
parent | cf8f42504efb477ffe59a2709a45124f20e2d547 (diff) | |
download | yelp-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-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/yelp-search-pager.c | 22 | ||||
-rw-r--r-- | stylesheets/search2html.xsl | 5 |
3 files changed, 26 insertions, 5 deletions
@@ -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> |