svnno****@sourc*****
svnno****@sourc*****
Wed Mar 12 18:47:48 JST 2008
Revision: 3480 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=kazehakase&view=rev&rev=3480 Author: pal_gene Date: 2008-03-12 18:47:48 +0900 (Wed, 12 Mar 2008) Log Message: ----------- Don't split at the making highlight. Modified Paths: -------------- kazehakase/trunk/module/search/kz-hyper-estraier-search.c Modified: kazehakase/trunk/module/search/kz-hyper-estraier-search.c =================================================================== --- kazehakase/trunk/module/search/kz-hyper-estraier-search.c 2008-03-12 01:57:57 UTC (rev 3479) +++ kazehakase/trunk/module/search/kz-hyper-estraier-search.c 2008-03-12 09:47:48 UTC (rev 3480) @@ -374,8 +374,7 @@ ESTDOC *doc; const gchar *title, *date, *cache_link; gchar *cache_str, *thumb_filename, *uri, *thumb_uri; - gchar *desc, **desc_highlight; - guint desc_len, desc_i; + gchar *desc, *p, *l; doc = est_mtdb_get_doc(he_search->db, results[i], 0); if (!doc) @@ -413,28 +412,44 @@ desc = est_doc_make_snippet(doc, highlights, num_summary, half_of_summary, half_of_summary); /* make highlight keyword */ - //TODO:more fast that don't split - desc_highlight = g_strsplit_set(desc, "\n", 0); - free(desc); /* don't g_free because born from estraier func */ - desc_len = g_strv_length(desc_highlight); desc_str->len = 0; /* reset contain length */ - for (desc_i = 0; desc_i < desc_len; desc_i++) + l = p = desc; + while (*p) { - char *found = strchr(desc_highlight[desc_i], '\t'); - if (found) - { - *found = '\0'; - g_string_append(desc_str, "<b>"); - g_string_append(desc_str, desc_highlight[desc_i]); - g_string_append(desc_str, "</b>"); - } - else - { - g_string_append(desc_str, desc_highlight[desc_i]); - } + if (*p == '\n') + { + g_string_append_len(desc_str, l, p - l); + l = ++p; + continue; + } + + if (*p == '\t') + { + g_string_append(desc_str, "<b>"); + g_string_append_len(desc_str, l, p - l); + g_string_append(desc_str, "</b>"); + while (*p) + { + if (*p == '\n') + { + l = ++p; + break; + } + p++; + } + if (*p == '\0') + { + l = NULL; + break; + } + continue; + } + p++; } - g_strfreev(desc_highlight); - + if (p != l && l) + g_string_append_len(desc_str, l, p - l); + free(desc); /* don't g_free because born from estraier func */ + g_string_append_printf(html, CONTENT, uri, @@ -684,7 +699,7 @@ g_warning("register error: %s", est_err_msg(est_mtdb_error(he_search->db))); g_warning("retry..."); est_mtdb_sync(he_search->db); - if(est_mtdb_put_doc(he_search->db, doc, 0)) + if((success = est_mtdb_put_doc(he_search->db, doc, 0))) { g_warning("succeed!"); } @@ -752,7 +767,6 @@ * @param path path to the directory contains contents to register * @return void */ -//TODO:don't register image type //TODO:correctly parse title (get_document_title()) static void register_documents_in_path (KzSearch *search, const gchar *path) @@ -783,16 +797,11 @@ //TODO:history search result, optional /* NOTE:string pointer compare is designed */ if (path == he_search->cache_path && strcmp(file, "time-stamp") == 0) - { - g_free(new_path); - continue; - } + goto END_NEW_PATH; contents = get_utf8_contents(new_path); - if (!contents) { - g_free(new_path); - continue; - } + if (!contents) + goto END_NEW_PATH; g_stat(new_path, &st); mtime = st.st_mtime; @@ -807,6 +816,7 @@ g_free(uri); g_free(contents); } + END_NEW_PATH: g_free(new_path); } g_dir_close (gd);