Hi,
I thought I would share this with other doxygen users. I recently
moved my site to using "external searching" ( see
http://www.stack.nl/~dimitri/doxygen/manual/extsearch.html ) . I noticed that
the xapian library used by doxygen can provide more
advance searching than is enabled by default in doxygen, so I modified
addon/doxysearch/doxysearch.cpp to take advantage of it. In
the main routine, I replaced the lines :
> Xapian::Query query;
> std::vector<std::string> words = split(searchFor,' ');
> for (std::vector<std::string>::const_iterator
> it=words.begin();it!=words.end();++it)
> {
> query =
> Xapian::Query(Xapian::Query::OP_OR,query,Xapian::Query(*it));
> }
with
> std::vector<std::string> words = split(searchFor,' ');
> Xapian::QueryParser parser;
> parser.set_database(db);
> parser.set_default_op(Xapian::Query::OP_AND);
> parser.set_stemming_strategy(Xapian::QueryParser::STEM_ALL);
> Xapian::termcount max_expansion=100;
> //parser.set_max_wildcard_expansion(max_expansion,Xapian::Query::WILDCARD_LIMIT_MOST_FREQUENT);
> parser.set_max_wildcard_expansion(max_expansion);
> Xapian::Query
> query=parser.parse_query(searchFor,Xapian::QueryParser::FLAG_DEFAULT|Xapian::QueryParser::FLAG_WILDCARD);
which gives me "stemmed" searches, wildcarding, and all terms are ANDed by
default . The maximum wildcard expansion doesn't appear
to work however, but this does not appear to be a problem for me. I have xapian
1.2.22 on my system which is about 18 months old.
Then, to help my users, I modified src/translator_en.h so that search results
include a link to a document describing the available
search syntax.
> virtual QCString trSearchResults(int numDocuments)
> {
> QCString Prompt("<BR> <A
> HREF=http://mywebserver/QueryParserSyntax.html> See here for details of
> available search syntax.
> </A>");
>
> if (numDocuments==0)
> {
> return "Sorry, no documents matching your query."+Prompt; }
> else if (numDocuments==1)
> {
> return "Found <b>1</b> document matching your query."+Prompt;
> }
> else
> {
> return "Found <b>$num</b> documents matching your query. Showing best
> matches first."+Prompt ;
> }
> }
I didn't attempt to translate this into all the other 43 available languages
however!
The document QueryParserSyntax.html is a modified version of
https://xapian.org/docs/queryparser.html with just the parts relevant
to my setup included.
Hope this helps someone else.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Doxygen-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/doxygen-users