forked from docs/doc-exports
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Co-authored-by: Lu, Huayi <luhuayi@huawei.com> Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
85 lines
11 KiB
HTML
85 lines
11 KiB
HTML
<a name="EN-US_TOPIC_0000001233708709"></a><a name="EN-US_TOPIC_0000001233708709"></a>
|
|
|
|
<h1 class="topictitle1">Parsing Queries</h1>
|
|
<div id="body8662426"><p id="EN-US_TOPIC_0000001233708709__en-us_topic_0059779203_p166391454117"><span id="EN-US_TOPIC_0000001233708709__text402633298">GaussDB(DWS)</span> provides functions <strong id="EN-US_TOPIC_0000001233708709__en-us_topic_0058965654_b842352706114733">to_tsquery</strong> and <strong id="EN-US_TOPIC_0000001233708709__en-us_topic_0058965654_b842352706114736">plainto_tsquery</strong> for converting a query to the <strong id="EN-US_TOPIC_0000001233708709__en-us_topic_0058965654_b842352706114747">tsquery</strong> data type. <strong id="EN-US_TOPIC_0000001233708709__en-us_topic_0058965654_b84235270611484">to_tsquery</strong> offers access to more features than <strong id="EN-US_TOPIC_0000001233708709__en-us_topic_0058965654_b84235270611488">plainto_tsquery</strong>, but is less forgiving about its input.</p>
|
|
<div class="section" id="EN-US_TOPIC_0000001233708709__section29471975128"><h4 class="sectiontitle">to_tsquery</h4><p id="EN-US_TOPIC_0000001233708709__p1467675114415"><strong id="EN-US_TOPIC_0000001233708709__b676565116369">to_tsquery</strong> converts a query to the <strong id="EN-US_TOPIC_0000001233708709__b329741012375">tsquery</strong> data type.</p>
|
|
<pre class="screen" id="EN-US_TOPIC_0000001233708709__screen15267113517125"><strong id="EN-US_TOPIC_0000001233708709__b626810357125">to_tsquery([ config regconfig, ] querytext text) returns tsquery</strong></pre>
|
|
<p id="EN-US_TOPIC_0000001233708709__p12268203511126"><strong id="EN-US_TOPIC_0000001233708709__b12840113813614">to_tsquery</strong> creates a <strong id="EN-US_TOPIC_0000001233708709__b10841183883610">tsquery</strong> value from <strong id="EN-US_TOPIC_0000001233708709__b584163813610">querytext</strong>, which must consist of single tokens separated by the Boolean operators <strong id="EN-US_TOPIC_0000001233708709__b1184116389365">&</strong> (AND), <strong id="EN-US_TOPIC_0000001233708709__b68413387362">|</strong> (OR), and <strong id="EN-US_TOPIC_0000001233708709__b108417386365">!</strong> (NOT). These operators can be grouped using parentheses. The input to to_tsquery must follow the general rules for tsquery input, as described in <a href="dws_06_0018.html">Text Search Types</a>. The difference is that while basic <strong id="EN-US_TOPIC_0000001233708709__b90147764421827">tsquery</strong> input takes the tokens at face value, <strong id="EN-US_TOPIC_0000001233708709__b141536776321827">to_tsquery</strong> normalizes each token to a lexeme using the specified or default configuration, and discards any tokens that are stop words according to the configuration. For example:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708709__screen3268173541217"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">to_tsquery</span><span class="p">(</span><span class="s1">'english'</span><span class="p">,</span><span class="w"> </span><span class="s1">'The & Fat & Rats'</span><span class="p">);</span>
|
|
<span class="w"> </span><span class="n">to_tsquery</span><span class="w"> </span>
|
|
<span class="c1">---------------</span>
|
|
<span class="w"> </span><span class="s1">'fat'</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="s1">'rat'</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233708709__p142681335191219">As in basic <strong id="EN-US_TOPIC_0000001233708709__b3499132853818">tsquery</strong> input, <strong id="EN-US_TOPIC_0000001233708709__b16499192816387">weight(s)</strong> can be attached to each lexeme to restrict it to match only <strong id="EN-US_TOPIC_0000001233708709__b550072893814">tsvector</strong> lexemes of those <strong id="EN-US_TOPIC_0000001233708709__b0500152820381">weight(s)</strong>. For example:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708709__screen19268135191220"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">to_tsquery</span><span class="p">(</span><span class="s1">'english'</span><span class="p">,</span><span class="w"> </span><span class="s1">'Fat | Rats:AB'</span><span class="p">);</span>
|
|
<span class="w"> </span><span class="n">to_tsquery</span><span class="w"> </span>
|
|
<span class="c1">------------------</span>
|
|
<span class="w"> </span><span class="s1">'fat'</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="s1">'rat'</span><span class="p">:</span><span class="n">AB</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233708709__p1326913356125">In addition, the asterisk (*) can be attached to a lexeme to specify prefix matching.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708709__screen202693356128"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">to_tsquery</span><span class="p">(</span><span class="s1">'supern:*A & star:A*B'</span><span class="p">);</span>
|
|
<span class="w"> </span><span class="n">to_tsquery</span><span class="w"> </span>
|
|
<span class="c1">--------------------------</span>
|
|
<span class="w"> </span><span class="s1">'supern'</span><span class="p">:</span><span class="o">*</span><span class="n">A</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="s1">'star'</span><span class="p">:</span><span class="o">*</span><span class="n">AB</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233708709__p11269113561219">Such a lexeme will match any word having the specified string and weight in a <strong id="EN-US_TOPIC_0000001233708709__b137561048521827">tsquery</strong>.</p>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233708709__section23662981316"><h4 class="sectiontitle">plainto_tsquery</h4><p id="EN-US_TOPIC_0000001233708709__p1547903148"><strong id="EN-US_TOPIC_0000001233708709__b174040985421827">plainto_tsquery</strong> transforms unformatted text <strong id="EN-US_TOPIC_0000001233708709__b132460485621827">querytext</strong> to <strong id="EN-US_TOPIC_0000001233708709__b66162779221827">tsquery</strong>. The text is parsed and normalized much as for <strong id="EN-US_TOPIC_0000001233708709__b107618026221827">to_tsvector</strong>, then the <strong id="EN-US_TOPIC_0000001233708709__b50265509921827">&</strong> (AND) Boolean operator is inserted between surviving words.</p>
|
|
<pre class="screen" id="EN-US_TOPIC_0000001233708709__screen14461509141"><strong id="EN-US_TOPIC_0000001233708709__b194717019147">plainto_tsquery([ config regconfig, ] querytext text) returns tsquery</strong></pre>
|
|
<p id="EN-US_TOPIC_0000001233708709__p047302144">For example:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708709__screen1947609147"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">plainto_tsquery</span><span class="p">(</span><span class="s1">'english'</span><span class="p">,</span><span class="w"> </span><span class="s1">'The Fat Rats'</span><span class="p">);</span>
|
|
<span class="w"> </span><span class="n">plainto_tsquery</span><span class="w"> </span>
|
|
<span class="c1">-----------------</span>
|
|
<span class="w"> </span><span class="s1">'fat'</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="s1">'rat'</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233708709__p204711020141">Note that <strong id="EN-US_TOPIC_0000001233708709__b84235270611563">plainto_tsquery</strong> cannot recognize Boolean operators, weight labels, or prefix-match labels in its input:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708709__screen104740111413"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">plainto_tsquery</span><span class="p">(</span><span class="s1">'english'</span><span class="p">,</span><span class="w"> </span><span class="s1">'The Fat & Rats:C'</span><span class="p">);</span>
|
|
<span class="w"> </span><span class="n">plainto_tsquery</span><span class="w"> </span>
|
|
<span class="c1">---------------------</span>
|
|
<span class="w"> </span><span class="s1">'fat'</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="s1">'rat'</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="s1">'c'</span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233708709__p13473061411">Here, all the input punctuation was discarded as being space symbols.</p>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0091.html">Controlling Text Search</a></div>
|
|
</div>
|
|
</div>
|
|
|