stas 02/03/24 09:06:39 Modified: src style.css src/search .swishcgi.conf SwishSpiderConfig.pl search.tt swish.cgi swish.conf tmpl/custom/html navbar_local_top search Log: working on the site search, syncs with the new swish-e Submitted by: Bill Moseley <[EMAIL PROTECTED]> Reviewed by: stas Revision Changes Path 1.39 +40 -0 modperl-docs/src/style.css Index: style.css =================================================================== RCS file: /home/cvs/modperl-docs/src/style.css,v retrieving revision 1.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- style.css 5 Mar 2002 05:05:26 -0000 1.38 +++ style.css 24 Mar 2002 17:06:38 -0000 1.39 @@ -216,6 +216,46 @@ font-size: 1.2em; } + +/* Search Results */ + +div.searchform { + font-size: 0.8em; +} + +td.searchheader { + background-color: #525a73; + font-family: verdana, arial, helvetica, sans-serif; + color: #ffffff; + font-size: 0.8em; +} + +td.searchtimes { + background-color: #525a73; + font-family: verdana, arial, helvetica, sans-serif; + color: #ffffff; + font-size: 0.6em; +} + + +td.searchnav { + background-color: #eeeeee; + font-family: verdana, arial, helvetica, sans-serif; + color: #000000; + font-size: 0.8em; +} + +dd.searchsummary { + font-size: 0.8em; +} + +dd.searchprops { + font-size: 0.6em; + color: green; +} + + + code { font-family: courier new, courier, monospace; } 1.3 +25 -7 modperl-docs/src/search/.swishcgi.conf Index: .swishcgi.conf =================================================================== RCS file: /home/cvs/modperl-docs/src/search/.swishcgi.conf,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- .swishcgi.conf 3 Mar 2002 11:27:21 -0000 1.2 +++ .swishcgi.conf 24 Mar 2002 17:06:38 -0000 1.3 @@ -1,6 +1,8 @@ return { - title => 'Search mod_perl Site', - template => { + title => 'Search mod_perl Site', + prepend_path => '../', # search results are shown one level down + + template => { package => 'TemplateToolkit', file => 'search.tt', options => { @@ -13,13 +15,29 @@ #method => 'popup_menu', columns => 6, metaname => 'section', # Can't be a metaname used elsewhere! - values => [qw/about contribute docs download maillist products stats stories support/], + + # These are the words (phrases) used for limiting searches to areas of the document tree + values => [qw( + docs + docs/1.0/guide + docs/1.0/faqs + docs/2.0 + maillist + stories + support + )], + labels => { - about => 'About mod_perl', - doc => 'Documentation', - stories => 'Sucess Stories', - support => 'Support', + docs => 'mod_perl Documentation', + 'docs/1.0/guide' => 'The Guide', + 'docs/1.0/faqs' => 'Faqs', + 'docs/2.0' => '2.0 Docs', + maillist => 'Mailing Lists', + products => 'mod_perl Based Software', + stories => 'Sucess Stories', + support => 'Support Options', }, + description => 'Limit search to these areas: ', }, 1.6 +32 -14 modperl-docs/src/search/SwishSpiderConfig.pl Index: SwishSpiderConfig.pl =================================================================== RCS file: /home/cvs/modperl-docs/src/search/SwishSpiderConfig.pl,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- SwishSpiderConfig.pl 23 Mar 2002 09:11:33 -0000 1.5 +++ SwishSpiderConfig.pl 24 Mar 2002 17:06:38 -0000 1.6 @@ -51,11 +51,10 @@ @params{ qw/ uri server response content / } = @_; $params{found} = 0; - my $tree = HTML::TreeBuilder->new; $tree->store_comments(1); - $tree->parse( ${$params{content}} ); # Why not allow a scalar ref? + $tree->parse( ${$params{content}} ); # Why not allow a scalar ref? $tree->eof; @@ -68,9 +67,17 @@ for $tree->look_down( '_tag', 'div', 'class', 'index_section' ); + ## If a page doesn't have an "index_section" then it's probably a table of contents (index.html) + ## so don't index it. + return 0; + + + # Indexed the page in sections, just return return 0 if $params{found}; + + # No sections found, so index the entire page (probably index.html) # Stip base_path @@ -92,33 +99,44 @@ my $uri = $params->{uri}; - my $section_name = 'Unknown_Section'; - my $name = $section->look_down( '_tag', 'a', - sub { defined($_[0]->attr('name')) } ); + # Grab the section link, and create a new title + + my $name = $section->look_down( '_tag', 'a', sub { defined($_[0]->attr('name')) } ); + + my @a_content = ('Unknown title'); + if ( $name ) { - $section_name = $name->attr('name'); + my $section_name = $name->attr('name'); $uri->fragment( $section_name ); + + $section_name =~ tr/_//d; + + @a_content = $name->content_list ? $name->content_list : ( $section_name ); } - my $text_title = $section_name; - $text_title =~ tr/_/ /s; + # Modify or create the title + my $title = $head->look_down('_tag', 'title'); if ( $title ) { - $title->push_content(": $text_title"); + $title->push_content( ': ', @a_content ); } else { my $title = HTML::Element->new('title'); - $title->push_content(": $text_title"); + $title->push_content( @a_content ); $head->push_content( $title ); } + + + # Extract out part of the path to use for limiting searches to parts of the document tree. + if ( $uri =~ m!$base_path/(.+)$! ) { my $path = $1; - $path =~ s{[^/]$}{}; # remove file name, if one + $path =~ s{/?[^/]+$}{}; # remove file name, if one my $meta = HTML::Element->new('meta', name=> 'section', content => $path); $head->push_content( $meta ); } @@ -132,12 +150,12 @@ $doc->push_content( $head, $body ); # If we want to stip the base_path - #my $url = $uri->as_string; - #$url =~ s/$base_path//; + my $url = $uri->as_string; + $url =~ s[$base_path/][]; my $new_content = $doc->as_HTML(undef,"\t"); output_content( $params->{server}, \$new_content, - $uri, $params->{response} ); + $url, $params->{response} ); $uri->fragment(undef); 1.6 +15 -17 modperl-docs/src/search/search.tt Index: search.tt =================================================================== RCS file: /home/cvs/modperl-docs/src/search/search.tt,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- search.tt 22 Mar 2002 07:28:13 -0000 1.5 +++ search.tt 24 Mar 2002 17:06:38 -0000 1.6 @@ -3,7 +3,8 @@ -%] [% WRAPPER searchresults.html %] [% - PROCESS swish_header; + # Title takes up space for no reason + # PROCESS swish_header; title = PROCESS title; @@ -61,6 +62,7 @@ [% BLOCK search_form %] + <div class="searchform"> [% CGI.start_form( '-action' => CGI.script_name) %] [% CGI.textfield( { name => 'query', @@ -75,6 +77,7 @@ [% search.get_limit_select %] [% CGI.end_form.join('') %] + </div> [% END %] @@ -84,25 +87,20 @@ [% search.stopwords_removed %] <table cellpadding=0 cellspacing=0 border=0 width="100%"> <tr> - <td height=20 bgcolor="#FF9999"> - <font size="-1" face="Geneva, Arial, Helvetica, San-Serif"> + <td height=20 class="searchheader"> Results for <b>[% search.query_simple | html %]</b> [% search.navigation('from') %] to [% search.navigation('to') %] of [% search.navigation('hits') %] results. - </font> </td> - <td align=right bgcolor="#FF9999"> - <font size="-2" face="Geneva, Arial, Helvetica, San-Serif"> - Run time: [% search.navigation('run_time') %] | + <td align=right class="searchtimes"> Search time: [% search.navigation('search_time') %] - </font> </td> </tr> [% IF search.navigation('pages') %] <tr> - <td colspan=2 bgcolor="#EEEEEE"> - <font size="-1" face="Geneva, Arial, Helvetica, San-Serif"> Page:</font> + <td colspan=2 class="searchnav"> + Page: [% search.navigation('pages') %] [% IF search.navigation('prev_count') %] @@ -136,15 +134,15 @@ <small>-- rank: <b>[% item.swishrank %]</b></small> </dt> - <dd> + <dd class="searchsummary"> [% item.swishdescription %] - <br> - <small> - [% item.swishdocpath %] - - [% item.swishdocsize %] bytes - - [% item.swishlastmodified %] - </small> </dd> + <dd class="searchprops"> + [% item.swishdocpath %]<br> + [% item.swishdocsize %] bytes + [% item.swishlastmodified %] + </dd> + </dl> [% END %] 1.6 +4 -4 modperl-docs/src/search/swish.cgi Index: swish.cgi =================================================================== RCS file: /home/cvs/modperl-docs/src/search/swish.cgi,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- swish.cgi 22 Mar 2002 10:52:16 -0000 1.5 +++ swish.cgi 24 Mar 2002 17:06:38 -0000 1.6 @@ -18,7 +18,7 @@ # # To display documentation for this program type "perldoc swish.cgi" # -# swish.cgi $Revision: 1.5 $ Copyright (C) 2001 Bill Moseley [EMAIL PROTECTED] +# swish.cgi $Revision: 1.6 $ Copyright (C) 2001 Bill Moseley [EMAIL PROTECTED] # Example CGI program for searching with SWISH-E # # This example program will only run under an OS that supports fork(). @@ -37,7 +37,7 @@ # # The above lines must remain at the top of this program # -# $Id: swish.cgi,v 1.5 2002/03/22 10:52:16 stas Exp $ +# $Id: swish.cgi,v 1.6 2002/03/24 17:06:38 stas Exp $ # #################################################################################### @@ -990,7 +990,7 @@ # Should look into doing: # $query = "( $query ) AND " . $limits->{metaname} . '=(' . join( ' OR ', @limits ) . ')'; if ( @limits && ref $limits eq 'HASH' && $limits->{metaname} ) { - $query .= ' and ' . $limits->{metaname} . '=(' . join( ' or ', @limits ) . ')'; + $query .= ' and ' . $limits->{metaname} . '=(' . join( ' or ', map { qq["$_"]} @limits ) . ')'; } @@ -2516,7 +2516,7 @@ =head1 LICENSE -swish.cgi $Revision: 1.5 $ Copyright (C) 2001 Bill Moseley [EMAIL PROTECTED] +swish.cgi $Revision: 1.6 $ Copyright (C) 2001 Bill Moseley [EMAIL PROTECTED] Example CGI program for searching with SWISH-E 1.6 +10 -11 modperl-docs/src/search/swish.conf Index: swish.conf =================================================================== RCS file: /home/cvs/modperl-docs/src/search/swish.conf,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- swish.conf 23 Mar 2002 09:11:33 -0000 1.5 +++ swish.conf 24 Mar 2002 17:06:38 -0000 1.6 @@ -1,20 +1,19 @@ +# Use an external program "spider.pl" to generate input for swish IndexDir ./spider.pl + +# Use the libxml2 parser, and save up to 100,000 chars DefaultContents HTML2 StoreDescription HTML2 <body> 100000 -MetaNames swishtitle swishdocpath section - -# This is to make the URLs shorter in the display. -ReplaceRules remove http://perl.apache.org -# For example, on my test setup I might do something like: -# Need ".." since search is on level down - -ReplaceRules replace http://mardy:40994/dst_html .. +# Allow limiting searches by these metanames +MetaNames swishtitle swishdocpath section +# And don't index any text from other <meta> tags UndefinedMetaTags ignore -#BuzzWords in highlighting -- -#How about counting highlighted terms individually in the highlight module -#so every term is highlighted at least once, with a total of say five. +# Add in the _ and : in the middle of a word +WordCharacters _:0123456789abcdefghijklmnopqrstuvwxyzªµºÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ +IgnoreFirstChar _: +IgnoreLastChar _: 1.11 +0 -1 modperl-docs/tmpl/custom/html/navbar_local_top Index: navbar_local_top =================================================================== RCS file: /home/cvs/modperl-docs/tmpl/custom/html/navbar_local_top,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- navbar_local_top 22 Mar 2002 02:02:16 -0000 1.10 +++ navbar_local_top 24 Mar 2002 17:06:39 -0000 1.11 @@ -19,5 +19,4 @@ </td> </tr> </table> -</form> <!--this line break must be here for ns4--> 1.12 +2 -1 modperl-docs/tmpl/custom/html/search Index: search =================================================================== RCS file: /home/cvs/modperl-docs/tmpl/custom/html/search,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- search 23 Mar 2002 09:11:33 -0000 1.11 +++ search 24 Mar 2002 17:06:39 -0000 1.12 @@ -18,7 +18,7 @@ <td class="menu-border" width="1"><br class="smallbr"></td> <td class="search" width="2" align="center"> <input type="submit" name="submit" value="Search" class="submit-but"> - <input type="hidden" name="sbm" value=""[% doc.dir.path_from_base %]""> + <input type="hidden" name="sbm" value="[% doc.dir.path_from_base %]"> </td> <td class="menu-border" width="1"><br class="smallbr"></td> </tr> @@ -26,3 +26,4 @@ <td class="menu-border" colspan="5" height="1"><br class="smallbr"></td> </tr> </table> +</form>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]