on master help sign in
[enh] improve translation documentation
commitf833c3d1291af0c1ac70b67791f2a2fa17db334c authorThomas Pointhuber <thomas.pointhuber@gmx.at> dateThu 21 Jan 2016, 16:25 (11 years ago) parent1a8a35b
9 files changed+123−73
_sources/dev/translation.txt+21−15 _static/pygments.css+2 _static/searchtools.js+37−8 dev/engine_overview.html+9−9 dev/plugins.html+9−9 dev/search_api.html+1−1 dev/translation.html+22−15 docs/dev/translation.rst+21−15 searchindex.js+1−1
_sources/dev/translation.txt+21−15
@@ -6,23 +6,29 @@ run these commands in the root directory of searx
66Add new language
77~~~~~~~~~~~~~~~~
88
9−``pybabel init -i messages.pot -d searx/translations -l it``
9+.. code:: shell
10+
11+ pybabel init -i messages.pot -d searx/translations -l it
1012
1113Update .po files
1214~~~~~~~~~~~~~~~~
1315
14−``./utils/update-translations.sh``
16+.. code:: shell
17+
18+ ./utils/update-translations.sh
1519
1620You may have errors here. In that case, edit the
1721``update-translations.sh`` script to change ``pybabel`` to
18−``pybabel-python2``
22+``pybabel-python2 or pybabel2``
1923
2024After this step, you can modify the .po files.
2125
2226Compile translations
2327~~~~~~~~~~~~~~~~~~~~
2428
25−``pybabel compile -d searx/translations``
29+.. code:: shell
30+
31+ pybabel compile -d searx/translations
2632
2733Transifex stuff
2834~~~~~~~~~~~~~~~
@@ -32,12 +38,14 @@ Init Project
3238
3339.. code:: shell
3440
41+ tx init # Transifex instance: https://www.transifex.com/asciimoo/searx/
42+
3543 tx set --auto-local -r searx.messagespo 'searx/translations/<lang>/LC_MESSAGES/messages.po' \
3644 --source-lang en --type PO --source-file messages.pot --execute
3745
38−http://docs.transifex.com/developer/client/set
46+http://docs.transifex.com/client/init/
3947
40−*TODO: mapping between transifex and searx*
48+http://docs.transifex.com/client/set/
4149
4250Get translations
4351^^^^^^^^^^^^^^^^
@@ -46,29 +54,27 @@ Get translations
4654
4755 tx pull -a
4856
49−http://docs.transifex.com/developer/client/pull
57+http://docs.transifex.com/client/pull
5058
5159Upload source File
5260^^^^^^^^^^^^^^^^^^
5361
54−::
62+.. code:: shell
5563
5664 tx push -s
5765
5866Upload all Translation
5967^^^^^^^^^^^^^^^^^^^^^^
6068
61−::
69+.. code:: shell
6270
6371 tx push -s -t
6472
65−upload specifc Translation (only for admins)
66−~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
73+upload specifc Translation
74+~~~~~~~~~~~~~~~~~~~~~~~~~~
6775
68−::
76+.. code:: shell
6977
7078 tx push -t -l tr
7179
72−http://docs.transifex.com/developer/client/push
73−
74−*TODO: upload empty files? (new translations)*
80+http://docs.transifex.com/client/push
_static/pygments.css+2
@@ -4,8 +4,10 @@
44.highlight .err { border: 1px solid #FF0000 } /* Error */
55.highlight .k { color: #007020; font-weight: bold } /* Keyword */
66.highlight .o { color: #666666 } /* Operator */
7+.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
78.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
89.highlight .cp { color: #007020 } /* Comment.Preproc */
10+.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
911.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
1012.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
1113.highlight .gd { color: #A00000 } /* Generic.Deleted */
_static/searchtools.js+37−8
@@ -10,6 +10,7 @@
1010 */
1111
1212
13+/* Non-minified version JS is _stemmer.js if file is provided */
1314/**
1415 * Porter Stemmer
1516 */
@@ -373,8 +374,7 @@ var Search = {
373374 }
374375
375376 // lookup as search terms in fulltext
376− results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term))
377− .concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title));
377+ results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
378378
379379 // let the scorer override scores with a custom scoring function
380380 if (Scorer.score) {
@@ -538,23 +538,47 @@ var Search = {
538538 /**
539539 * search for full-text terms in the index
540540 */
541− performTermsSearch : function(searchterms, excluded, terms, score) {
541+ performTermsSearch : function(searchterms, excluded, terms, titleterms) {
542542 var filenames = this._index.filenames;
543543 var titles = this._index.titles;
544544
545− var i, j, file, files;
545+ var i, j, file;
546546 var fileMap = {};
547+ var scoreMap = {};
547548 var results = [];
548549
549550 // perform the search on the required terms
550551 for (i = 0; i < searchterms.length; i++) {
551552 var word = searchterms[i];
553+ var files = [];
554+ var _o = [
555+ {files: terms[word], score: Scorer.term},
556+ {files: titleterms[word], score: Scorer.title}
557+ ];
558+
552559 // no match but word was a required one
553− if ((files = terms[word]) === undefined)
560+ if ($u.every(_o, function(o){return o.files === undefined;})) {
554561 break;
555− if (files.length === undefined) {
556− files = [files];
557562 }
563+ // found search word in contents
564+ $u.each(_o, function(o) {
565+ var _files = o.files;
566+ if (_files === undefined)
567+ return
568+
569+ if (_files.length === undefined)
570+ _files = [_files];
571+ files = files.concat(_files);
572+
573+ // set score for the word in each file to Scorer.term
574+ for (j = 0; j < _files.length; j++) {
575+ file = _files[j];
576+ if (!(file in scoreMap))
577+ scoreMap[file] = {}
578+ scoreMap[file][word] = o.score;
579+ }
580+ });
581+
558582 // create the mapping
559583 for (j = 0; j < files.length; j++) {
560584 file = files[j];
@@ -576,7 +600,9 @@ var Search = {
576600 // ensure that none of the excluded terms is in the search result
577601 for (i = 0; i < excluded.length; i++) {
578602 if (terms[excluded[i]] == file ||
579− $u.contains(terms[excluded[i]] || [], file)) {
603+ titleterms[excluded[i]] == file ||
604+ $u.contains(terms[excluded[i]] || [], file) ||
605+ $u.contains(titleterms[excluded[i]] || [], file)) {
580606 valid = false;
581607 break;
582608 }
@@ -584,6 +610,9 @@ var Search = {
584610
585611 // if we have still a valid result we can add it to the result list
586612 if (valid) {
613+ // select one (max) score for the file.
614+ // for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
615+ var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
587616 results.push([filenames[file], titles[file], '', null, score]);
588617 }
589618 }
dev/engine_overview.html+9−9
@@ -190,8 +190,8 @@ overrides are the following:</p>
190190</div>
191191<div class="section" id="example-code">
192192<h3><a class="toc-backref" href="#id7">example code</a><a class="headerlink" href="#example-code" title="Permalink to this headline">¶</a></h3>
193−<div class="code python highlight-python"><div class="highlight"><pre><span class="c"># engine dependent config</span>
194−<span class="n">categories</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;general&#39;</span><span class="p">]</span>
193+<div class="code python highlight-python"><div class="highlight"><pre><span class="c1"># engine dependent config</span>
194+<span class="n">categories</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;general&#39;</span><span class="p">]</span>
195195<span class="n">paging</span> <span class="o">=</span> <span class="bp">True</span>
196196<span class="n">language_support</span> <span class="o">=</span> <span class="bp">True</span>
197197</pre></div>
@@ -313,17 +313,17 @@ used to specify a search request:</p>
313313</div>
314314<div class="section" id="id1">
315315<h3><a class="toc-backref" href="#id11">example code</a><a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3>
316−<div class="code python highlight-python"><div class="highlight"><pre><span class="c"># search-url</span>
317−<span class="n">base_url</span> <span class="o">=</span> <span class="s">&#39;https://example.com/&#39;</span>
318−<span class="n">search_string</span> <span class="o">=</span> <span class="s">&#39;search?{query}&amp;page={page}&#39;</span>
316+<div class="code python highlight-python"><div class="highlight"><pre><span class="c1"># search-url</span>
317+<span class="n">base_url</span> <span class="o">=</span> <span class="s1">&#39;https://example.com/&#39;</span>
318+<span class="n">search_string</span> <span class="o">=</span> <span class="s1">&#39;search?{query}&amp;page={page}&#39;</span>
319319
320−<span class="c"># do search-request</span>
320+<span class="c1"># do search-request</span>
321321<span class="k">def</span> <span class="nf">request</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">params</span><span class="p">):</span>
322322 <span class="n">search_path</span> <span class="o">=</span> <span class="n">search_string</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
323− <span class="n">query</span><span class="o">=</span><span class="n">urlencode</span><span class="p">({</span><span class="s">&#39;q&#39;</span><span class="p">:</span> <span class="n">query</span><span class="p">}),</span>
324− <span class="n">page</span><span class="o">=</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;pageno&#39;</span><span class="p">])</span>
323+ <span class="n">query</span><span class="o">=</span><span class="n">urlencode</span><span class="p">({</span><span class="s1">&#39;q&#39;</span><span class="p">:</span> <span class="n">query</span><span class="p">}),</span>
324+ <span class="n">page</span><span class="o">=</span><span class="n">params</span><span class="p">[</span><span class="s1">&#39;pageno&#39;</span><span class="p">])</span>
325325
326− <span class="n">params</span><span class="p">[</span><span class="s">&#39;url&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">base_url</span> <span class="o">+</span> <span class="n">search_path</span>
326+ <span class="n">params</span><span class="p">[</span><span class="s1">&#39;url&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">base_url</span> <span class="o">+</span> <span class="n">search_path</span>
327327
328328 <span class="k">return</span> <span class="n">params</span>
329329</pre></div>
dev/plugins.html+9−9
@@ -45,19 +45,19 @@
4545searx.</p>
4646<div class="section" id="example-plugin-py">
4747<h2>example_plugin.py<a class="headerlink" href="#example-plugin-py" title="Permalink to this headline">¶</a></h2>
48−<div class="code python highlight-python"><div class="highlight"><pre><span class="n">name</span> <span class="o">=</span> <span class="s">&#39;Example plugin&#39;</span>
49−<span class="n">description</span> <span class="o">=</span> <span class="s">&#39;This plugin extends the suggestions with the word &quot;example&quot;&#39;</span>
50−<span class="n">default_on</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># disable by default</span>
48+<div class="code python highlight-python"><div class="highlight"><pre><span class="n">name</span> <span class="o">=</span> <span class="s1">&#39;Example plugin&#39;</span>
49+<span class="n">description</span> <span class="o">=</span> <span class="s1">&#39;This plugin extends the suggestions with the word &quot;example&quot;&#39;</span>
50+<span class="n">default_on</span> <span class="o">=</span> <span class="bp">False</span> <span class="c1"># disable by default</span>
5151
52−<span class="n">js_dependencies</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">()</span> <span class="c"># optional, list of static js files</span>
53−<span class="n">css_dependencies</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">()</span> <span class="c"># optional, list of static css files</span>
52+<span class="n">js_dependencies</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">()</span> <span class="c1"># optional, list of static js files</span>
53+<span class="n">css_dependencies</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">()</span> <span class="c1"># optional, list of static css files</span>
5454
5555
56−<span class="c"># attach callback to the post search hook</span>
57−<span class="c"># request: flask request object</span>
58−<span class="c"># ctx: the whole local context of the post search hook</span>
56+<span class="c1"># attach callback to the post search hook</span>
57+<span class="c1"># request: flask request object</span>
58+<span class="c1"># ctx: the whole local context of the post search hook</span>
5959<span class="k">def</span> <span class="nf">post_search</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">ctx</span><span class="p">):</span>
60− <span class="n">ctx</span><span class="p">[</span><span class="s">&#39;search&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">suggestions</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s">&#39;example&#39;</span><span class="p">)</span>
60+ <span class="n">ctx</span><span class="p">[</span><span class="s1">&#39;search&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">suggestions</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s1">&#39;example&#39;</span><span class="p">)</span>
6161 <span class="k">return</span> <span class="bp">True</span>
6262</pre></div>
6363</div>
dev/search_api.html+1−1
@@ -25,7 +25,7 @@
2525 <script type="text/javascript" src="../_static/doctools.js"></script>
2626 <link rel="top" title="searx 0.8.0 documentation" href="../index.html" />
2727 <link rel="next" title="Plugins" href="plugins.html" />
28− <link rel="prev" title="Installation" href="install/installation.html" />
28+ <link rel="prev" title="Engine overview" href="engine_overview.html" />
2929
3030
3131 <link media="only screen and (max-device-width: 480px)" href="../_static/small_flask.css" type= "text/css" rel="stylesheet" />
dev/translation.html+22−15
@@ -43,58 +43,65 @@
4343<p>run these commands in the root directory of searx</p>
4444<div class="section" id="add-new-language">
4545<h2>Add new language<a class="headerlink" href="#add-new-language" title="Permalink to this headline">¶</a></h2>
46−<p><code class="docutils literal"><span class="pre">pybabel</span> <span class="pre">init</span> <span class="pre">-i</span> <span class="pre">messages.pot</span> <span class="pre">-d</span> <span class="pre">searx/translations</span> <span class="pre">-l</span> <span class="pre">it</span></code></p>
46+<div class="code shell highlight-python"><div class="highlight"><pre>pybabel init -i messages.pot -d searx/translations -l it
47+</pre></div>
48+</div>
4749</div>
4850<div class="section" id="update-po-files">
4951<h2>Update .po files<a class="headerlink" href="#update-po-files" title="Permalink to this headline">¶</a></h2>
50−<p><code class="docutils literal"><span class="pre">./utils/update-translations.sh</span></code></p>
52+<div class="code shell highlight-python"><div class="highlight"><pre>./utils/update-translations.sh
53+</pre></div>
54+</div>
5155<p>You may have errors here. In that case, edit the
5256<code class="docutils literal"><span class="pre">update-translations.sh</span></code> script to change <code class="docutils literal"><span class="pre">pybabel</span></code> to
53−<code class="docutils literal"><span class="pre">pybabel-python2</span></code></p>
57+<code class="docutils literal"><span class="pre">pybabel-python2</span> <span class="pre">or</span> <span class="pre">pybabel2</span></code></p>
5458<p>After this step, you can modify the .po files.</p>
5559</div>
5660<div class="section" id="compile-translations">
5761<h2>Compile translations<a class="headerlink" href="#compile-translations" title="Permalink to this headline">¶</a></h2>
58−<p><code class="docutils literal"><span class="pre">pybabel</span> <span class="pre">compile</span> <span class="pre">-d</span> <span class="pre">searx/translations</span></code></p>
62+<div class="code shell highlight-python"><div class="highlight"><pre>pybabel compile -d searx/translations
63+</pre></div>
64+</div>
5965</div>
6066<div class="section" id="transifex-stuff">
6167<h2>Transifex stuff<a class="headerlink" href="#transifex-stuff" title="Permalink to this headline">¶</a></h2>
6268<div class="section" id="init-project">
6369<h3>Init Project<a class="headerlink" href="#init-project" title="Permalink to this headline">¶</a></h3>
64−<div class="code shell highlight-python"><div class="highlight"><pre>tx set --auto-local -r searx.messagespo &#39;searx/translations/&lt;lang&gt;/LC_MESSAGES/messages.po&#39; \
70+<div class="code shell highlight-python"><div class="highlight"><pre>tx init # Transifex instance: https://www.transifex.com/asciimoo/searx/
71+
72+tx set --auto-local -r searx.messagespo &#39;searx/translations/&lt;lang&gt;/LC_MESSAGES/messages.po&#39; \
6573--source-lang en --type PO --source-file messages.pot --execute
6674</pre></div>
6775</div>
68−<p><a class="reference external" href="http://docs.transifex.com/developer/client/set">http://docs.transifex.com/developer/client/set</a></p>
69−<p><em>TODO: mapping between transifex and searx</em></p>
76+<p><a class="reference external" href="http://docs.transifex.com/client/init/">http://docs.transifex.com/client/init/</a></p>
77+<p><a class="reference external" href="http://docs.transifex.com/client/set/">http://docs.transifex.com/client/set/</a></p>
7078</div>
7179<div class="section" id="get-translations">
7280<h3>Get translations<a class="headerlink" href="#get-translations" title="Permalink to this headline">¶</a></h3>
7381<div class="code shell highlight-python"><div class="highlight"><pre>tx pull -a
7482</pre></div>
7583</div>
76−<p><a class="reference external" href="http://docs.transifex.com/developer/client/pull">http://docs.transifex.com/developer/client/pull</a></p>
84+<p><a class="reference external" href="http://docs.transifex.com/client/pull">http://docs.transifex.com/client/pull</a></p>
7785</div>
7886<div class="section" id="upload-source-file">
7987<h3>Upload source File<a class="headerlink" href="#upload-source-file" title="Permalink to this headline">¶</a></h3>
80−<div class="highlight-python"><div class="highlight"><pre>tx push -s
88+<div class="code shell highlight-python"><div class="highlight"><pre>tx push -s
8189</pre></div>
8290</div>
8391</div>
8492<div class="section" id="upload-all-translation">
8593<h3>Upload all Translation<a class="headerlink" href="#upload-all-translation" title="Permalink to this headline">¶</a></h3>
86−<div class="highlight-python"><div class="highlight"><pre>tx push -s -t
94+<div class="code shell highlight-python"><div class="highlight"><pre>tx push -s -t
8795</pre></div>
8896</div>
8997</div>
9098</div>
91−<div class="section" id="upload-specifc-translation-only-for-admins">
92−<h2>upload specifc Translation (only for admins)<a class="headerlink" href="#upload-specifc-translation-only-for-admins" title="Permalink to this headline">¶</a></h2>
93−<div class="highlight-python"><div class="highlight"><pre>tx push -t -l tr
99+<div class="section" id="upload-specifc-translation">
100+<h2>upload specifc Translation<a class="headerlink" href="#upload-specifc-translation" title="Permalink to this headline">¶</a></h2>
101+<div class="code shell highlight-python"><div class="highlight"><pre>tx push -t -l tr
94102</pre></div>
95103</div>
96−<p><a class="reference external" href="http://docs.transifex.com/developer/client/push">http://docs.transifex.com/developer/client/push</a></p>
97−<p><em>TODO: upload empty files? (new translations)</em></p>
104+<p><a class="reference external" href="http://docs.transifex.com/client/push">http://docs.transifex.com/client/push</a></p>
98105</div>
99106</div>
100107
docs/dev/translation.rst+21−15
@@ -6,23 +6,29 @@ run these commands in the root directory of searx
66Add new language
77~~~~~~~~~~~~~~~~
88
9−``pybabel init -i messages.pot -d searx/translations -l it``
9+.. code:: shell
10+
11+ pybabel init -i messages.pot -d searx/translations -l it
1012
1113Update .po files
1214~~~~~~~~~~~~~~~~
1315
14−``./utils/update-translations.sh``
16+.. code:: shell
17+
18+ ./utils/update-translations.sh
1519
1620You may have errors here. In that case, edit the
1721``update-translations.sh`` script to change ``pybabel`` to
18−``pybabel-python2``
22+``pybabel-python2 or pybabel2``
1923
2024After this step, you can modify the .po files.
2125
2226Compile translations
2327~~~~~~~~~~~~~~~~~~~~
2428
25−``pybabel compile -d searx/translations``
29+.. code:: shell
30+
31+ pybabel compile -d searx/translations
2632
2733Transifex stuff
2834~~~~~~~~~~~~~~~
@@ -32,12 +38,14 @@ Init Project
3238
3339.. code:: shell
3440
41+ tx init # Transifex instance: https://www.transifex.com/asciimoo/searx/
42+
3543 tx set --auto-local -r searx.messagespo 'searx/translations/<lang>/LC_MESSAGES/messages.po' \
3644 --source-lang en --type PO --source-file messages.pot --execute
3745
38−http://docs.transifex.com/developer/client/set
46+http://docs.transifex.com/client/init/
3947
40−*TODO: mapping between transifex and searx*
48+http://docs.transifex.com/client/set/
4149
4250Get translations
4351^^^^^^^^^^^^^^^^
@@ -46,29 +54,27 @@ Get translations
4654
4755 tx pull -a
4856
49−http://docs.transifex.com/developer/client/pull
57+http://docs.transifex.com/client/pull
5058
5159Upload source File
5260^^^^^^^^^^^^^^^^^^
5361
54−::
62+.. code:: shell
5563
5664 tx push -s
5765
5866Upload all Translation
5967^^^^^^^^^^^^^^^^^^^^^^
6068
61−::
69+.. code:: shell
6270
6371 tx push -s -t
6472
65−upload specifc Translation (only for admins)
66−~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
73+upload specifc Translation
74+~~~~~~~~~~~~~~~~~~~~~~~~~~
6775
68−::
76+.. code:: shell
6977
7078 tx push -t -l tr
7179
72−http://docs.transifex.com/developer/client/push
73−
74−*TODO: upload empty files? (new translations)*
80+http://docs.transifex.com/client/push
searchindex.js+1−1
@@ -1 +1 @@
1−Search.setIndex({envversion:46,filenames:["dev/contribution_guide","dev/engine_overview","dev/install/installation","dev/plugins","dev/search_api","dev/translation","index","user/search_syntax"],objects:{},objnames:{},objtypes:{},terms:{"boolean":1,"break":0,"byte":1,"case":5,"char":0,"default":0,"function":[0,1,3,4],"import":2,"int":1,"new":[],"null":2,"return":[],"static":3,"switch":0,"true":[1,2,3],"while":[3,6],a2enmod:2,abbrev:7,about:[0,1,2,6],abov:[0,2],accept:[0,7],access_log:2,activ:[2,4],adapt:1,add:[],addit:2,addition:6,address:1,adopt:0,adress:1,after:5,agent:1,aggreg:6,all:[],allow:[2,7],alreadi:[0,1],also:[0,7],alter:0,alwai:1,among:0,anonym:6,anoth:1,apache2:2,api_kei:1,app:2,appli:2,applic:2,appreci:0,apt:2,arrai:1,asciimoo:2,aspect:0,assign:1,attach:3,author:0,auto:5,avail:2,back:[1,2],base:1,base_url:[1,2],bash:2,becaus:[0,1],behaviour:0,below:2,better:[1,2,3],between:[1,5],bin:2,born:0,both:[0,4],boundingbox:1,browser:0,bugreport:0,build:[1,2],calcul:1,call:3,callback:3,can:[0,1,2,3,5,6],capabl:0,care:0,categori:[1,4,7],certif:2,chainabl:7,chang:[1,2,5],chapter:0,chdir:2,chmod:2,choos:[0,1],chown:2,citi:1,client:5,clone:2,collect:6,com:[1,2,5],combin:2,come:0,comma:4,command:[2,5],compon:3,concern:0,conf:2,config:[1,2],connect:6,consequ:0,contain:1,content:2,context:3,convent:0,cooki:[1,6],corner:0,count:2,countri:1,coupl:2,cpu:2,creat:2,css:3,css_depend:3,cthulhu:7,ctx:3,current:[],custom:[0,7],customlog:2,data:[1,6],date:1,datetim:1,ddg:7,debian:2,debug:2,decim:1,def:[1,3],default_on:3,demon:2,depend:[1,2],descript:[3,4],deserv:0,dev:2,develop:[],deviat:0,differ:[0,1,3],digit:6,directori:5,disrespect:0,doc:[1,5],doe:[0,6],doesn:0,domain:2,domin:0,don:0,duckduckgo:7,easili:0,edit:[2,5],educ:0,empti:5,en_u:1,enabl:[0,2],encrypt:6,engin:[],enough:0,enter:2,equival:4,error:5,error_log:2,essenti:2,etc:[0,2],everi:1,everyth:2,exampl:[],except:0,execut:5,exist:0,exit:2,expand:0,expect:0,explain:0,extend:3,extern:1,facil:0,fals:[2,3],fanci:0,featur:[],feedback:0,feel:3,file:[],filenam:1,files:1,fill:1,fine:2,flask:3,folder:1,follow:[0,1],followsymlink:2,forget:0,fork:0,format:1,free:[],from:[],further:[],furthermor:1,geojson:1,get:[],gid:2,git:2,github:2,give:1,goal:0,goe:0,good:0,grant:2,hack:0,hackerspac:7,handler:2,happen:0,happi:0,have:[1,2,4,5],header:1,here:[0,5],hex:2,highli:0,hour:2,hous:1,house_numb:1,html:1,http:[1,2,5,6],https_rewrit:3,imag:[],img_src:1,implement:[],includ:2,inclus:7,index:2,inform:[1,6],ini:2,init:[],insert:1,insid:[1,3],instanc:2,intent:0,interfer:0,internet:6,interpret:2,interpretor:2,iso:1,itself:0,js_depend:3,kei:1,known:0,lack:0,lang:5,language_support:1,lat:1,latitud:1,lc_messag:5,least:[0,1],leech:1,leecher:1,level:0,libapache2:2,libffi:2,librari:1,libssl:2,libxslt:2,light:2,like:[1,2,3],line:0,list:[1,3,4,7],listen:2,local:[1,2,3,5],localhost:2,locat:2,lon:1,longitud:1,magnet_uri_schem:1,magnetlink:1,mai:5,main:0,make:1,manner:0,map:5,mass:0,master:2,math:3,max:1,maximis:0,maximum:[0,1],mayb:0,media:1,messag:5,messagespo:5,meta:0,method:[1,4],might:0,min:1,misbehav:0,mod:2,modif:0,modifi:[5,7],modul:2,more:3,most:1,multibl:1,must:1,name:[1,3,4],necessari:2,need:0,net:6,none:1,nor:6,normal:1,note:2,number:[1,2,4],number_of_result:1,object:[1,3],observ:0,offer:6,often:1,okhin:2,on_result:3,onli:[],onlin:6,openssl:2,option:[1,2,3,4],org:1,organis:6,origin:2,osm:1,other:[0,1,6],otherwis:1,out:0,over:6,overwrit:1,overwritten:1,packag:2,page:[1,4,7],pageno:[1,4],pagenumb:1,parallel:3,param:1,paramt:1,parti:6,partli:1,path:2,pep8:0,per:1,perform:1,perserv:0,pip:2,place:[0,1],pleas:0,plugin:[],point:[],possibl:1,post:[0,2,3,4],post_search:3,postcod:1,pot:5,pre:3,pre_search:3,prefer:7,prefix:7,preserv:0,preview:1,proce:2,profil:6,promot:6,protect:0,provid:[0,1],publish:1,publishedd:1,pull:[0,2,5],purpos:1,push:5,pybabel:[2,5],python2:5,python:[0,1,2],pythonpath:2,quadratur:6,queri:[1,4,7],quit:0,qwer:7,rand:2,random:1,realli:1,recommend:1,reconsid:0,redefin:1,reduc:0,rememb:0,replac:3,repo:0,repositori:2,repres:1,request:0,requir:[1,2,3,4],respec:0,respect:[],restart:2,result:[],rewrit:2,right:[2,6],road:1,root:[2,5],round:0,run:[2,3,5],same:1,script:5,script_nam:2,search:[],search_path:1,search_str:1,searx:[],secur:6,sed:2,see:[3,4,7],seed:1,seeder:1,select:7,self:6,separ:4,seper:0,server_nam:2,servic:2,set:[],sethandl:2,setup:2,share:6,shortcut:1,should:[0,2],simpli:0,sinc:0,singl:2,site:[1,2],size:1,small:1,socket:2,softwar:6,solver:3,some:[0,1,2],someth:0,sourc:[],special:1,specif:[1,2],specifi:4,ssl:[1,2,6],standard:[0,1],start:[1,2],stash:2,step:[2,5],store:[1,6],street:1,string:1,submit:0,sudo:2,suggest:3,support:[0,1,4],sure:[0,2],syntax:[],taken:0,tell:1,templat:1,test:[0,2],text:1,thi:[0,1,2,3,5],thing:3,think:0,third:6,thu:0,thumbnail:1,thumbnail_src:1,time:1,timeout:1,titl:1,tld:2,tool:0,tor:6,torrentfil:1,toward:0,track:6,transifex:[],try_fil:2,tupl:3,twice:2,txt:2,type:[1,5],ubuntu:2,uid:2,ultrasecretkei:2,uncommon:0,unfortun:0,univers:2,unix:2,unspecifi:1,updat:[],upgrad:2,uri:2,urlencod:1,user:[0,1,2,6],useradd:2,usr:2,usual:2,util:5,uwsgi_modifier1:2,uwsgi_param:2,uwsgi_pass:2,uwsgisocket:2,valid:1,valu:1,variabl:1,variou:[0,3],vendor:0,verifi:1,via:7,virtual:2,virtualenv:2,wai:0,want:1,warn:2,wathev:1,webapp:2,weird:0,welcom:0,what:1,when:1,where:1,which:[0,1,6],who:2,whole:[2,3],wide:0,width:0,wiki:[0,1],wikipedia:[1,7],without:1,word:3,work:[0,1,2],worker:2,world:0,wsgi:2,yet:1,yml:[],you:[0,1,2,5,7],your:2,yourself:0,zlib1g:2},titles:["How to contribute","Engine overview","Installation","Plugins","Search API","Translation","Privacy-respecting free metasearch engine","Search syntax"],titleterms:{"default":1,"new":5,"return":1,add:5,admin:5,all:5,apach:2,api:4,argument:1,basic:2,check:2,code:[0,1],compil:5,configur:[1,2],content:1,contribut:0,current:3,design:0,develop:6,direct:0,disabl:2,document:[0,6],endpoint:4,engin:[1,6],entri:3,exampl:[1,7],example_plugin:3,featur:6,file:[1,5],free:6,from:2,further:6,gener:1,get:5,hackabl:0,hook:3,host:2,how:[0,2],imag:1,implement:3,init:5,instal:2,languag:5,log:2,map:1,metasearch:6,nginx:2,onli:5,overrid:1,overview:1,paramet:4,pars:1,pass:1,plugin:3,point:3,prime:0,privaci:[0,6],project:5,read:6,request:1,respect:6,result:1,search:[4,7],searx:2,server:2,set:1,sourc:5,specifc:5,stuff:5,subdirectori:2,syntax:7,todo:3,torrent:1,transifex:5,translat:[0,5],updat:[2,5],upload:5,url:2,uwsgi:2,video:1,web:2,yml:1}})
1+Search.setIndex({envversion:46,filenames:["dev/contribution_guide","dev/engine_overview","dev/install/installation","dev/plugins","dev/search_api","dev/translation","index","user/search_syntax"],objects:{},objnames:{},objtypes:{},terms:{"boolean":1,"break":0,"byte":1,"case":5,"char":[],"default":[],"function":[1,3,4],"import":2,"int":1,"new":[],"null":2,"return":[],"static":3,"switch":0,"true":[1,2,3],"while":[3,6],a2enmod:2,abbrev:7,abl:[0,1],about:[0,2,6],abov:[0,2],accept:7,access_log:2,activ:[2,4],adapt:1,add:[],addit:[1,2],addition:6,address:1,adopt:0,adress:1,after:5,agent:1,aggreg:6,all:[],allow:[2,7],alreadi:0,also:[0,2,7],alter:0,alwai:1,among:0,anonym:6,anoth:1,apache2:2,api_kei:1,app:2,appli:[0,2],applic:2,appreci:[],appropri:0,apt:2,arbitrari:1,arrai:1,asciimoo:[2,5],aspect:0,assign:1,attach:3,author:0,auto:5,avail:2,back:2,base:1,base_url:[1,2],bash:2,becaus:[0,1],behaviour:0,below:[0,2],better:[1,2,3],between:1,bin:2,born:0,both:[0,4],boundingbox:1,branch:0,browser:0,bugreport:0,build:[0,2],built:[0,1],calcul:[],call:3,callback:3,can:[0,1,2,3,5,6],capabl:0,care:[],categori:[1,4,7],certif:2,chainabl:7,chang:[2,5],chapter:0,charact:0,chdir:2,checkout:0,chmod:2,choos:[0,1],chown:2,citi:1,client:5,clone:2,collect:6,com:[1,2,5],combin:2,come:0,comma:4,command:[2,5],compon:3,concern:0,conf:2,config:[1,2],connect:6,consequ:0,construct:1,contain:[],content:[],context:3,convent:0,cooki:[1,6],corner:0,could:1,count:2,countri:1,coupl:2,cpu:2,creat:[0,2],css:3,css_depend:3,cthulhu:7,ctx:3,current:[],custom:[0,7],customlog:2,data:[1,6],date:1,datetim:1,ddg:7,debian:2,debug:2,decim:1,def:[1,3],default_on:3,demon:2,depend:[1,2],deploi:2,descript:[3,4],deserv:0,desir:1,dev:2,develop:[],deviat:[],differ:[0,1,3],digit:6,directori:5,disrespect:0,doc:5,dockerfil:2,doe:[1,6],doesn:[],domain:2,domin:0,don:[],duckduckgo:7,easili:0,edit:[0,2,5],educ:[],effect:0,embed:2,empti:[],en_u:1,enabl:[0,2],encrypt:6,engin:[],enough:[],enter:2,equival:4,error:5,error_log:2,essenti:2,etc:[0,2],everi:1,everyth:2,exampl:[],except:0,execut:5,exist:0,exit:2,expand:[],expect:0,explain:0,extend:[0,3],extens:0,extern:1,facil:[],fals:[2,3],fanci:0,featur:[],feedback:0,feel:3,few:[0,1],file:[],filenam:1,files:1,fill:[],fine:2,fix:0,flask:3,folder:[0,1],follow:[0,1],followsymlink:2,forget:[],fork:0,format:1,free:[],from:[],further:[],furthermor:1,geojson:1,get:[],gid:2,git:2,github:2,give:1,goal:[],goe:[],good:0,grant:2,hack:0,hackerspac:7,handler:2,happen:[],happi:0,have:[0,1,2,4,5],header:1,here:5,hex:2,highli:[],hour:2,hous:1,house_numb:1,howev:1,html:[0,1],http:[1,2,5,6],https_rewrit:3,hub:2,imag:[],img_src:1,implement:[],includ:2,inclus:7,index:2,inform:[0,1,2,6],ini:2,init:[],insert:[],insid:[1,3],instanc:[2,5],intent:0,interfer:0,internet:6,interpret:2,interpretor:2,iso:1,itself:0,js_depend:3,kei:1,known:[],lack:0,lang:5,language_support:1,lat:1,latitud:1,lc_messag:5,least:[],leech:1,leecher:1,length:0,level:0,libapache2:2,libffi:2,librari:[],libssl:2,libxslt:2,light:2,like:[1,2,3],line:0,list:[1,3,4,7],listen:2,local:[1,2,3,5],localhost:2,locat:2,lon:1,longitud:1,magnet_uri_schem:[],magnetlink:1,mai:5,main:[],make:[],manag:2,manner:[],map:[],mass:0,master:2,math:3,matter:1,max:1,maxim:0,maximis:[],maximum:[0,1],mayb:[],media:1,messag:5,messagespo:5,meta:[],method:[1,4],might:0,min:1,misbehav:0,mod:2,modif:[],modifi:[5,7],modul:2,more:[2,3],most:[],multibl:1,must:[0,1],name:[1,2,3,4],necessari:2,need:0,net:6,none:1,nor:6,normal:1,note:[0,2],number:[1,2,4],number_of_result:1,object:[1,3],observ:[],off:0,offer:6,often:1,okhin:2,on_result:3,onli:[],onlin:6,openssl:2,option:[1,2,3,4],order:0,org:1,organis:6,origin:2,osm:1,other:[0,1,6],otherwis:1,out:0,over:6,overwrit:[],overwritten:1,packag:2,page:[0,1,4,7],pageno:[1,4],pagenumb:1,parallel:3,param:1,paramt:1,parti:6,partli:1,patch:0,path:2,pep8:0,per:1,perform:1,perserv:[],pip:0,place:[0,1],pleas:0,plenti:0,plugin:[],point:[],port:2,possibl:2,post:[0,2,3,4],post_search:3,postcod:1,pot:5,pre:3,pre_search:3,prefer:7,prefix:7,preserv:0,preview:1,proce:2,profil:6,promot:6,protect:0,provid:[0,1],publish:1,publishedd:1,pull:[0,2,5],purpos:1,push:5,pybabel2:5,pybabel:[2,5],python2:5,python:2,pythonpath:2,quadratur:6,queri:[1,4,7],quit:0,qwer:7,rand:2,random:1,realli:[],recommend:1,reconsid:0,redefin:1,reduc:0,rememb:0,replac:3,repo:0,repositori:2,repres:1,request:[],requir:[0,1,3,4],respec:[],respect:[],restart:2,result:[],rewrit:2,right:[2,6],road:1,root:[2,5],round:0,rst:0,run:[2,3,5],same:1,script:5,script_nam:2,search:[],search_path:1,search_str:1,searx:[],secur:6,sed:2,see:[2,3,4,7],seed:1,seeder:1,select:7,self:6,separ:[0,4],seper:[],server_nam:2,servic:2,set:[],sethandl:2,setup:2,share:6,shortcut:1,should:[0,2],simpli:0,sinc:[],singl:2,site:[1,2],size:1,small:1,socket:2,softwar:6,solver:3,some:2,someth:0,sourc:[],special:1,specif:[1,2],specifi:[1,4],sphinx:0,ssl:[1,2,6],standard:[0,1],start:[1,2],stash:2,step:[0,2,5],store:[1,6],street:1,string:1,submit:0,sudo:2,suggest:3,support:[0,1,4],sure:2,syntax:[],system:0,take:0,taken:[],tell:1,templat:1,test:[0,2],text:1,thi:[1,2,3,5],thing:3,think:0,third:6,three:0,thu:[],thumbnail:1,thumbnail_src:1,time:1,timeout:1,titl:1,tld:2,tool:0,tor:6,torrentfil:1,toward:[],track:6,transifex:[],try_fil:2,tupl:3,turn:0,twice:2,two:0,txt:0,type:[1,5],ubuntu:2,uid:2,ultrasecretkei:2,uncommon:0,under:[0,1],unfortun:0,unit:0,univers:2,unix:2,unspecifi:1,updat:[],update_packag:2,upgrad:[],uri:2,urlencod:1,user:[0,1,2,6],useradd:2,usr:2,usual:2,util:5,uwsgi_modifier1:2,uwsgi_param:2,uwsgi_pass:2,uwsgisocket:2,valid:1,valu:1,variabl:1,variou:[0,3],vendor:0,verifi:1,via:7,virtual:2,virtualenv:2,wai:[0,1],want:[],warn:2,wathev:[],webapp:2,weird:0,welcom:[],what:[],whatev:2,when:1,where:[],which:[0,1,6],who:2,whole:[2,3],wide:0,width:[],wiki:[],wikipedia:7,wish:0,without:1,wonderfal:2,word:3,work:[0,1,2],worker:2,world:0,wsgi:2,www:5,yet:1,yml:[],you:[0,2,5,7],your:[0,2],yourself:0,zlib1g:2},titles:["How to contribute","Engine overview","Installation","Plugins","Search API","Translation","Privacy-respecting free metasearch engine","Search syntax"],titleterms:{"default":1,"new":5,"return":1,add:5,admin:[],all:5,apach:2,api:4,argument:1,basic:2,check:2,code:[0,1],compil:5,configur:[1,2],content:[1,2],contribut:0,current:3,design:0,develop:6,direct:0,disabl:2,docker:2,document:[0,6],endpoint:4,engin:[1,6],entri:3,exampl:[1,7],example_plugin:3,featur:6,file:[1,5],free:6,from:2,further:6,gener:1,get:5,hackabl:0,hook:3,host:2,how:[0,2],imag:1,implement:3,init:5,instal:2,languag:5,log:2,make:1,map:1,metasearch:6,nginx:2,onli:[],overrid:1,overview:1,paramet:4,pars:1,pass:1,plugin:3,point:3,prime:0,privaci:[0,6],project:5,read:6,request:1,respect:6,result:1,search:[4,7],searx:2,server:2,set:1,sourc:5,specifc:5,stuff:5,subdirectori:2,syntax:7,todo:3,torrent:1,transifex:5,translat:[0,5],updat:[2,5],upload:5,url:2,uwsgi:2,video:1,web:2,yml:1}})