forked from docs/doc-exports
Reviewed-by: Hasko, Vladimir <vladimir.hasko@t-systems.com> Co-authored-by: Lu, Huayi <luhuayi@huawei.com> Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
213 lines
27 KiB
HTML
213 lines
27 KiB
HTML
<a name="EN-US_TOPIC_0000001098990762"></a><a name="EN-US_TOPIC_0000001098990762"></a>
|
|
|
|
<h1 class="topictitle1">Text Search Types</h1>
|
|
<div id="body8662426"><p id="EN-US_TOPIC_0000001098990762__en-us_topic_0059778491_p12917462412"><span id="EN-US_TOPIC_0000001098990762__text21037665">GaussDB(DWS)</span> offers two data types that are designed to support full text search. The <strong id="EN-US_TOPIC_0000001098990762__b842352706105537">tsvector</strong> type represents a document in a form optimized for text search. The <strong id="EN-US_TOPIC_0000001098990762__b842352706105550">tsquery</strong> type similarly represents a text query.</p>
|
|
<div class="section" id="EN-US_TOPIC_0000001098990762__s934d4044f26b4b9fa4db5ac289b9c466"><h4 class="sectiontitle">tsvector</h4><p id="EN-US_TOPIC_0000001098990762__a5f9226b2714749de9c5e3dd45d30f6c7">The <strong id="EN-US_TOPIC_0000001098990762__b842352706171938">tsvector</strong> type represents a retrieval unit, usually a textual column within a row of a database table, or a combination of such columns. A <strong id="EN-US_TOPIC_0000001098990762__b842352706171945">tsvector</strong> value is a sorted list of distinct lexemes, which are words that have been normalized to merge different variants of the same word. Sorting and deduplication are done automatically during input. The <strong id="EN-US_TOPIC_0000001098990762__b842352706171943">to_tsvector</strong> function is used to parse and normalize a document string. The <strong id="EN-US_TOPIC_0000001098990762__b842352706145110">to_tsvector</strong> function is used to parse and normalize a document string.</p>
|
|
<p id="EN-US_TOPIC_0000001098990762__abca4697680574757824dae1271251914">A <strong id="EN-US_TOPIC_0000001098990762__b84235270695732">tsvector</strong> value is a sorted list of distinct lexemes, which are words that have been formatted different entries. During segmentation, <strong id="EN-US_TOPIC_0000001098990762__b827999040112318">tsvector</strong> automatically performs duplicate-elimination to the entries for input in a certain order. For example:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098990762__s163472b7c9fc4c13b9f3de46840fd980"><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="s1">'a fat cat sat on a mat and ate a fat rat'</span><span class="p">::</span><span class="n">tsvector</span><span class="p">;</span><span class="w"></span>
|
|
<span class="w"> </span><span class="n">tsvector</span><span class="w"> </span>
|
|
<span class="c1">----------------------------------------------------</span>
|
|
<span class="w"> </span><span class="s1">'a'</span><span class="w"> </span><span class="s1">'and'</span><span class="w"> </span><span class="s1">'ate'</span><span class="w"> </span><span class="s1">'cat'</span><span class="w"> </span><span class="s1">'fat'</span><span class="w"> </span><span class="s1">'mat'</span><span class="w"> </span><span class="s1">'on'</span><span class="w"> </span><span class="s1">'rat'</span><span class="w"> </span><span class="s1">'sat'</span><span class="w"></span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001098990762__aea15b3305e6f48a184771553a58eae28">It can be seen from the preceding example that <strong id="EN-US_TOPIC_0000001098990762__b842352706144036">tsvector</strong> segments a string by spaces, and segmented lexemes are sorted based on their length and alphabetical order. To represent lexemes containing whitespace or punctuation, surround them with quotes:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098990762__s37912316ffa64388882892627bc23e71"><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="err">$$</span><span class="n">the</span><span class="w"> </span><span class="n">lexeme</span><span class="w"> </span><span class="s1">' '</span><span class="w"> </span><span class="k">contains</span><span class="w"> </span><span class="n">spaces$$</span><span class="p">::</span><span class="n">tsvector</span><span class="p">;</span><span class="w"></span>
|
|
<span class="w"> </span><span class="n">tsvector</span><span class="w"> </span>
|
|
<span class="c1">-------------------------------------------</span>
|
|
<span class="w"> </span><span class="s1">' '</span><span class="w"> </span><span class="s1">'contains'</span><span class="w"> </span><span class="s1">'lexeme'</span><span class="w"> </span><span class="s1">'spaces'</span><span class="w"> </span><span class="s1">'the'</span><span class="w"></span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001098990762__ae3aded2c01f34669865288ed00ee4e69">Use double dollar signs ($$) to mark entries containing single quotation marks (').</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098990762__sd430895458d7429aac354e1b769cfab7"><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="err">$$</span><span class="n">the</span><span class="w"> </span><span class="n">lexeme</span><span class="w"> </span><span class="s1">'Joe''s'</span><span class="w"> </span><span class="k">contains</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="n">quote$$</span><span class="p">::</span><span class="n">tsvector</span><span class="p">;</span><span class="w"></span>
|
|
<span class="w"> </span><span class="n">tsvector</span><span class="w"> </span>
|
|
<span class="c1">------------------------------------------------</span>
|
|
<span class="w"> </span><span class="s1">'Joe''s'</span><span class="w"> </span><span class="s1">'a'</span><span class="w"> </span><span class="s1">'contains'</span><span class="w"> </span><span class="s1">'lexeme'</span><span class="w"> </span><span class="s1">'quote'</span><span class="w"> </span><span class="s1">'the'</span><span class="w"></span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001098990762__a82c16692ac634f2ab4af6d0fa2710f4d">Optionally, integer positions can be attached to lexemes:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098990762__s4560451dd4774fc89c384301474af404"><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="s1">'a:1 fat:2 cat:3 sat:4 on:5 a:6 mat:7 and:8 ate:9 a:10 fat:11 rat:12'</span><span class="p">::</span><span class="n">tsvector</span><span class="p">;</span><span class="w"></span>
|
|
<span class="w"> </span><span class="n">tsvector</span><span class="w"> </span>
|
|
<span class="c1">-------------------------------------------------------------------------------</span>
|
|
<span class="w"> </span><span class="s1">'a'</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">10</span><span class="w"> </span><span class="s1">'and'</span><span class="p">:</span><span class="mi">8</span><span class="w"> </span><span class="s1">'ate'</span><span class="p">:</span><span class="mi">9</span><span class="w"> </span><span class="s1">'cat'</span><span class="p">:</span><span class="mi">3</span><span class="w"> </span><span class="s1">'fat'</span><span class="p">:</span><span class="mi">2</span><span class="p">,</span><span class="mi">11</span><span class="w"> </span><span class="s1">'mat'</span><span class="p">:</span><span class="mi">7</span><span class="w"> </span><span class="s1">'on'</span><span class="p">:</span><span class="mi">5</span><span class="w"> </span><span class="s1">'rat'</span><span class="p">:</span><span class="mi">12</span><span class="w"> </span><span class="s1">'sat'</span><span class="p">:</span><span class="mi">4</span><span class="w"></span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001098990762__a73595bf795fc44528c809dc2b75211a9">A position normally indicates the source word's location in the document. Positional information can be used for proximity ranking. Position values range from 1 to 16383. The default maximum value is <strong id="EN-US_TOPIC_0000001098990762__b842352706121150">16383</strong>. Duplicate positions for the same lexeme are discarded.</p>
|
|
<p id="EN-US_TOPIC_0000001098990762__a7fad5312f07949a2ad871e29422832f1">Lexemes that have positions can further be labeled with a weight, which can be <strong id="EN-US_TOPIC_0000001098990762__b84235270615818">A</strong>, <strong id="EN-US_TOPIC_0000001098990762__b84235270615824">B</strong>, <strong id="EN-US_TOPIC_0000001098990762__b84235270615828">C</strong>, or <strong id="EN-US_TOPIC_0000001098990762__b84235270615833">D</strong>. <strong id="EN-US_TOPIC_0000001098990762__b84235270615855">D</strong> is the default and hence is not shown on output:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098990762__s49341942863b400982ac56cc882e113b"><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="s1">'a:1A fat:2B,4C cat:5D'</span><span class="p">::</span><span class="n">tsvector</span><span class="p">;</span><span class="w"></span>
|
|
<span class="w"> </span><span class="n">tsvector</span><span class="w"> </span>
|
|
<span class="c1">----------------------------</span>
|
|
<span class="w"> </span><span class="s1">'a'</span><span class="p">:</span><span class="mi">1</span><span class="n">A</span><span class="w"> </span><span class="s1">'cat'</span><span class="p">:</span><span class="mi">5</span><span class="w"> </span><span class="s1">'fat'</span><span class="p">:</span><span class="mi">2</span><span class="n">B</span><span class="p">,</span><span class="mi">4</span><span class="k">C</span><span class="w"></span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001098990762__a80f4562c9ae64b06ad6fe4c9301e6085">Weights are typically used to reflect document structure, for example, by marking title words differently from body words. Text search ranking functions can assign different priorities to the different weight markers.</p>
|
|
<p id="EN-US_TOPIC_0000001098990762__a7e580ea03b1c44cab3667f4cec7af872">The following example is the standard usage of the <strong id="EN-US_TOPIC_0000001098990762__b842352706151219">tsvector</strong> type. For example:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098990762__s399a4bde2bb840679b2545260f1636b1"><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="s1">'The Fat Rats'</span><span class="p">::</span><span class="n">tsvector</span><span class="p">;</span><span class="w"></span>
|
|
<span class="w"> </span><span class="n">tsvector</span><span class="w"> </span>
|
|
<span class="c1">--------------------</span>
|
|
<span class="w"> </span><span class="s1">'Fat'</span><span class="w"> </span><span class="s1">'Rats'</span><span class="w"> </span><span class="s1">'The'</span><span class="w"></span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001098990762__a8764cd7ea61646fe9488855d0dc12a9e">For most English-text-searching applications the above words would be considered non-normalized, which should usually be passed through <strong id="EN-US_TOPIC_0000001098990762__b84235270615147">to_tsvector</strong> to normalize the words appropriately for searching:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098990762__scbef51dc5bfc4a79b8ed056ad50c7383"><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_tsvector</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="w"> </span><span class="n">to_tsvector</span><span class="w"> </span>
|
|
<span class="c1">-----------------</span>
|
|
<span class="w"> </span><span class="s1">'fat'</span><span class="p">:</span><span class="mi">2</span><span class="w"> </span><span class="s1">'rat'</span><span class="p">:</span><span class="mi">3</span><span class="w"></span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001098990762__s6fcc1326c15e422d8b40cce6e014b079"><h4 class="sectiontitle">tsquery</h4><p id="EN-US_TOPIC_0000001098990762__a1eae6fa57f8b4287b8b50f337778c838">The <strong id="EN-US_TOPIC_0000001098990762__b842352706151617">tsquery</strong> type represents a retrieval condition. A <strong id="EN-US_TOPIC_0000001098990762__b842352706105217">tsquery</strong> value stores lexemes that are to be searched for, and combines them honoring the <strong id="EN-US_TOPIC_0000001098990762__b842352706151942">Boolean</strong> operators <strong id="EN-US_TOPIC_0000001098990762__b84235270610536">& (AND)</strong>, <strong id="EN-US_TOPIC_0000001098990762__b842352706105313">| (OR)</strong>, and <strong id="EN-US_TOPIC_0000001098990762__b842352706105322">! (NOT)</strong>. Parentheses can be used to enforce grouping of the operators. The <strong id="EN-US_TOPIC_0000001098990762__b842352706152646">to_tsquery</strong> and <strong id="EN-US_TOPIC_0000001098990762__b842352706152652">plainto_tsquery</strong> functions will normalize lexemes before the lexemes are converted to the <strong id="EN-US_TOPIC_0000001098990762__b84235270615297">tsquery</strong> type.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098990762__s272692d6effe4bba892214a8ece2bb12"><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>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span>
|
|
<span class="normal">13</span>
|
|
<span class="normal">14</span>
|
|
<span class="normal">15</span>
|
|
<span class="normal">16</span>
|
|
<span class="normal">17</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="s1">'fat & rat'</span><span class="p">::</span><span class="n">tsquery</span><span class="p">;</span><span class="w"></span>
|
|
<span class="w"> </span><span class="n">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="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
|
|
|
|
<span class="k">SELECT</span><span class="w"> </span><span class="s1">'fat & (rat | cat)'</span><span class="p">::</span><span class="n">tsquery</span><span class="p">;</span><span class="w"></span>
|
|
<span class="w"> </span><span class="n">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="p">(</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">'cat'</span><span class="w"> </span><span class="p">)</span><span class="w"></span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
|
|
|
|
<span class="k">SELECT</span><span class="w"> </span><span class="s1">'fat & rat & ! cat'</span><span class="p">::</span><span class="n">tsquery</span><span class="p">;</span><span class="w"></span>
|
|
<span class="w"> </span><span class="n">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="o">!</span><span class="s1">'cat'</span><span class="w"></span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001098990762__a46b2546b37344689b0a34002ff851c27">In the absence of parentheses, <strong id="EN-US_TOPIC_0000001098990762__b842352706105648">! (NOT)</strong> binds most tightly, and <strong id="EN-US_TOPIC_0000001098990762__b84235270610575">& (AND)</strong> binds more tightly than <strong id="EN-US_TOPIC_0000001098990762__b842352706105718">| (OR)</strong>.</p>
|
|
<p id="EN-US_TOPIC_0000001098990762__ad5017f8edef84cc7a0bb6723f03b070d">Lexemes in a <strong id="EN-US_TOPIC_0000001098990762__b8423527061112">tsquery</strong> can be labeled with one or more weight letters, which restrict them to match only <strong id="EN-US_TOPIC_0000001098990762__b84235270611125">tsvector</strong> lexemes with matching weights:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098990762__sa7350eca12d84d1c9757227067c8c35b"><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="s1">'fat:ab & cat'</span><span class="p">::</span><span class="n">tsquery</span><span class="p">;</span><span class="w"></span>
|
|
<span class="w"> </span><span class="n">tsquery</span><span class="w"> </span>
|
|
<span class="c1">------------------</span>
|
|
<span class="w"> </span><span class="s1">'fat'</span><span class="p">:</span><span class="n">AB</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="s1">'cat'</span><span class="w"></span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001098990762__a46a8188f3d3d4a49b0c3a26b549decfe">Also, lexemes in a <strong id="EN-US_TOPIC_0000001098990762__b842352706153059">tsquery</strong> can be labeled with * to specify prefix matching:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098990762__sf2849e95604545ffb32b0f38346773a7"><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="s1">'super:*'</span><span class="p">::</span><span class="n">tsquery</span><span class="p">;</span><span class="w"></span>
|
|
<span class="w"> </span><span class="n">tsquery</span><span class="w"> </span>
|
|
<span class="c1">-----------</span>
|
|
<span class="w"> </span><span class="s1">'super'</span><span class="p">:</span><span class="o">*</span><span class="w"></span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001098990762__ae43251c3fc864fefbec4064e4abb1af5">This query will match any word in a <strong id="EN-US_TOPIC_0000001098990762__b84235270611250">tsvector</strong> that begins with "super".</p>
|
|
<p id="EN-US_TOPIC_0000001098990762__a82f8139b7a474aec821e45a8123a01b4">Note that prefixes are first processed by text search configurations, which means the following example returns true:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098990762__scdeff722dc34447792615c72ab866ee9"><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_tsvector</span><span class="p">(</span><span class="w"> </span><span class="s1">'postgraduate'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">@@</span><span class="w"> </span><span class="n">to_tsquery</span><span class="p">(</span><span class="w"> </span><span class="s1">'postgres:*'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">RESULT</span><span class="p">;</span><span class="w"></span>
|
|
<span class="w"> </span><span class="k">result</span><span class="w"> </span>
|
|
<span class="c1">----------</span>
|
|
<span class="w"> </span><span class="n">t</span><span class="w"></span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001098990762__a997256c4bc294a419fcf011598d9e8cc">because <strong id="EN-US_TOPIC_0000001098990762__b84235270611436">postgres</strong> gets stemmed to <strong id="EN-US_TOPIC_0000001098990762__b84235270611443">postgr</strong>:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098990762__s0b577b1c97494a26a5e57754035d2b42"><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">'postgres:*'</span><span class="p">);</span><span class="w"></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">'postgr'</span><span class="p">:</span><span class="o">*</span><span class="w"></span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001098990762__a7b9f4d0ca43c4f099ea49cad334c47ad">which then matches <strong id="EN-US_TOPIC_0000001098990762__b84235270611512">postgraduate</strong>.</p>
|
|
<p id="EN-US_TOPIC_0000001098990762__aa468b02083b146ffbef66f11ede11df6"><strong id="EN-US_TOPIC_0000001098990762__b842352706153241">'Fat:ab & Cats'</strong> is normalized to the <strong id="EN-US_TOPIC_0000001098990762__b842352706153349">tsquery</strong> type as follows:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098990762__sfd4d8eeedbf74aa48b20366d61b9d868"><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">'Fat:ab & Cats'</span><span class="p">);</span><span class="w"></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="p">:</span><span class="n">AB</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="s1">'cat'</span><span class="w"></span>
|
|
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0008.html">Data Types</a></div>
|
|
</div>
|
|
</div>
|
|
|