X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/15f9bb7ce5034ca9a6c813a0bf7ddb55d73c67fc..afab05a505e3edce906e66781e9748a9e2ab1334:/doc/todo/different_search_engine.mdwn?ds=sidebyside diff --git a/doc/todo/different_search_engine.mdwn b/doc/todo/different_search_engine.mdwn index 592c159b3..39f3e3256 100644 --- a/doc/todo/different_search_engine.mdwn +++ b/doc/todo/different_search_engine.mdwn @@ -1,10 +1,16 @@ -After using it for a while, my feeling is that hyperestradier, as used in +After using it for a while, my feeling is that [[hyperestraier]], as used in the [[plugins/search]] plugin, is not robust enough for ikiwiki. It doesn't -upgrade well, and it has a habit of sig-11 on certian input from time to +upgrade well, and it has a habit of sig-11 on certain input from time to time. -So some other engine should be found and used instead. Enrico had one that -he was using for debtags stuff that looked pretty good. +So some other engine should be found and used instead. + +Enrico had one that he was using for debtags stuff that looked pretty good. +That was [Xapian](http://www.xapian.org/), which has perl bindings in +libsearch-xapian-perl. The nice thing about xapian is that it does a ranked +search so it understands what words are most important in a search. (So +does Lucene..) Another nice thing is it supports "more documents like this +one" kind of search. --[[Joey]] >> I've done a bit of prototyping on this. The current hip search library is [Lucene](http://lucene.apache.org/java/docs/). There's a Perl port called [Plucene](http://search.cpan.org/~tmtm/Plucene-1.25/). Given that it's already packaged, as `libplucene-perl`, I assumed it would be a good starting point. I've written a **very rough** patch against `IkiWiki/Plugin/search.pm` to handle the indexing side (there's no facility to view the results yet, although I have a command-line interface working). That's below, and should apply to SVN trunk. @@ -17,6 +23,12 @@ he was using for debtags stuff that looked pretty good. >> If this seems a sensible approach, I'll write the CGI interface, and clean up the plugin. -- Ben +>>> The weird thing about lucene is that these are all reimplmentations of +>>> it. Thank you java.. The C++ version seems like a better choice to me +>>> (packages are trivial). --[[Joey]] + +> Might I suggest renaming the "search" plugin to "hyperestraier", and then creating new search plugins for different engines? No reason to pick a single replacement. --[[JoshTriplett]] +
Index: IkiWiki/Plugin/search.pm =================================================================== @@ -54,20 +66,20 @@ Index: IkiWiki/Plugin/search.pm + sub import { #{{{ - hook(type => "getopt", id => "hyperestraier", -- call => \&getopt); +- call => \&getopt); - hook(type => "checkconfig", id => "hyperestraier", + hook(type => "checkconfig", id => "plucene", - call => \&checkconfig); + call => \&checkconfig); - hook(type => "pagetemplate", id => "hyperestraier", -- call => \&pagetemplate); +- call => \&pagetemplate); - hook(type => "delete", id => "hyperestraier", + hook(type => "delete", id => "plucene", - call => \&delete); + call => \&delete); - hook(type => "change", id => "hyperestraier", + hook(type => "change", id => "plucene", - call => \&change); + call => \&change); - hook(type => "cgi", id => "hyperestraier", -- call => \&cgi); +- call => \&cgi); } # }}} -sub getopt () { #{{{