Some search engines have several interfaces for querying, with different search parameters. E.g. www.google.de has ?q= for normal queries and ?as_q= for advanced/special queries. Currently modules/DataFiles/SearchEngines.php does not allow specifying something like this.
Suggestion: Change the data structure so it is an array of query options. E.g. "www.google.de" => array("Google", "q"), could be changed to "www.google.de" => array("Google", array("q", "as_q")),
Please give a URL example for several search engines, so we can justify such a change.
Example: Most Google queries appear just fine (i.e. I see the keywords in the "Best Search Engines" box), but some URLs slip through, like http://www.google.com/search?as_q=spiele+f%C3%BCr+draussen&hl=de&num=10&btnG=Google-Suche&as_epq=&as_oq=&as_eq=&lr=&cr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=&as_rights=&safe=images
This is the normal "advanced search" interface from Google.
http://suche.aolsvc.de/ has the same issue. Compare http://suche.aolsvc.de/aol/search?invocationType=topsearchbox.webhome&query=spiele+f%C3%BCr+drau%C3%9Fen&rp= with http://suche.aolsvc.de/aol/search?invocationType=advancedSearch&as_q=spiele+f%C3%BCr+drau%C3%9Fen&count_override=10&btnG=AOL+Suche&as_epq=&as_oq=&as_eq=&lr=&as_ft=i&as_filetype=&as_qdr=keine+Zeitbegrenzung&as_nlo=&as_nhi=&as_dt=i&ex_as_sitesearch=&as_rights=
What is the behaviour for Yahoo! and Live?
Have you had a look at the code for this (see function detectRefererSearchEngine() in [source:/trunk/modules/LogStats/Visit.php@head#L653])
m.live.com (searching from my mobile device) uses "q" (web) or "Q" (images, news, maps, etc).
www.altavista.com (advanced search) uses "aqa" (all these words), "aqp" (exact phrase), "ago" (any of these words), and "aqn" (none of these words).
There's an old list of search engine query strings (http://www.science.co.il/analog/SearchQuery.txt) that gives other examples.
As an alternative, if the lookup fails, we can try parsing the query. Having this as a fallback, piwik could theoretically handle unknown search engines. For an idea see: http://blog.netnerds.net/2007/02/mssql-parse-search-engine-querystrings-for-search-terms/
this was implemented recently and is available as of 0.2.35
please check out the FAQ for information with detecting search engines