{"kind": "fts", "major": "18", "item": {"slug": "template-ispell", "name": "ispell", "name_zh": "", "category": "\u8bcd\u5178\u6a21\u677f", "summary": "ispell \u8bcd\u5178", "aliases": [], "content_hash": "516262e2dcd6742d624d3920bf6c77984fc318e4ccde001359062cf2ca938299", "versions": {"10": {"facts": [{"label": "\u6a21\u677f\u540d\u79f0\uff08tmplname\uff09", "value": "ispell"}, {"label": "\u521d\u59cb\u5316\u51fd\u6570\uff08tmplinit\uff09", "value": "dispell_init"}, {"label": "\u8bcd\u6cd5\u5316\u51fd\u6570\uff08tmpllexize\uff09", "value": "dispell_lexize"}], "tables": [], "aliases": [], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "label": "10.23", "major": "10", "channel": "historical", "revision": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9", "source_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9", "catalog_fingerprint": "691be281b476dde4374d7f805b2bacc2e75bdef40f1e9d3d42e91f97fe95cfd0"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, {"url": "https://pg.center/docs/10/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "path": "textsearch-dictionaries.html", "label": "PostgreSQL 10 English manual", "sha256": "3ebf526b3637016bf4e286a1d8e6b999f02824f9df4e53a9df9afdd0a06dc83d", "language": "en", "original_url": "/docs/10/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY"}], "sections": [], "signature": "", "attributes": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "description": ["ispell \u8bcd\u5178"], "manual_html": "<div class=\"sect2\" id=\"TEXTSEARCH-ISPELL-DICTIONARY\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/10/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY\">12.6.5. <span class=\"application\">Ispell</span> \u8bcd\u5178</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u8bcd\u5178\u6a21\u677f\u652f\u6301<em class=\"firstterm\">\u5f62\u6001\u8bcd\u5178</em>\uff0c\u5b83\u53ef\u4ee5\u628a\u4e00\u4e2a\u8bcd\u7684\u8bb8\u591a\u4e0d\u540c\u8bed\u8a00\u5b66\u5f62\u5f0f\u6b63\u89c4\u5316\u4e3a\u540c\u4e00\u4e2a\u8bcd\u4f4d\u3002\u4f8b\u5982\uff0c\u4e00\u4e2a\u82f1\u8bed <span class=\"application\">Ispell</span> \u8bcd\u5178\u53ef\u4ee5\u5339\u914d\u641c\u7d22\u8bcd <code class=\"literal\">bank</code> \u7684\u6240\u6709\u53d8\u683c\u548c\u53d8\u4f4d\u5f62\u5f0f\uff0c\u4f8b\u5982 <code class=\"literal\">banking</code>\u3001<code class=\"literal\">banked</code>\u3001<code class=\"literal\">banks</code>\u3001<code class=\"literal\">banks'</code> \u548c <code class=\"literal\">bank's</code>\u3002</p>\n<p lang=\"zh\">\u6807\u51c6<span class=\"productname\">PostgreSQL</span>\u53d1\u884c\u7248\u4e0d\u5305\u542b\u4efb\u4f55<span class=\"application\">Ispell</span>\u914d\u7f6e\u6587\u4ef6\u3002\u5927\u91cf\u8bed\u8a00\u7684\u8bcd\u5178\u53ef\u4ece<a class=\"ulink\" href=\"http://ficus-www.cs.ucla.edu/geoff/ispell.html\" target=\"_top\">Ispell</a>\u83b7\u53d6\u3002\u6b64\u5916\uff0c\u8fd8\u652f\u6301\u4e00\u4e9b\u66f4\u73b0\u4ee3\u7684\u8bcd\u5178\u6587\u4ef6\u683c\u5f0f \u2014 <a class=\"ulink\" href=\"http://en.wikipedia.org/wiki/MySpell\" target=\"_top\">MySpell</a> (OO &lt; 2.0.1) \u548c<a class=\"ulink\" href=\"http://sourceforge.net/projects/hunspell/\" target=\"_top\">Hunspell</a>(OO &gt;= 2.0.2)\u3002\u5728<a class=\"ulink\" href=\"http://wiki.services.openoffice.org/wiki/Dictionaries\" target=\"_top\">OpenOffice Wiki</a>\u4e0a\u6709\u5927\u91cf\u8bcd\u5178\u53ef\u7528\u3002</p>\n<p lang=\"zh\">\u8981\u521b\u5efa\u4e00\u4e2a<span class=\"application\">Ispell</span>\u8bcd\u5178\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4e0b\u8f7d\u8bcd\u5178\u914d\u7f6e\u6587\u4ef6\u3002<span class=\"productname\">OpenOffice</span>\u6269\u5c55\u6587\u4ef6\u7684\u6269\u5c55\u540d\u662f<code class=\"filename\">.oxt</code>\u3002\u9700\u8981\u63d0\u53d6<code class=\"filename\">.aff</code>\u548c<code class=\"filename\">.dic</code>\u6587\u4ef6\uff0c\u5c06\u6269\u5c55\u540d\u6539\u4e3a<code class=\"filename\">.affix</code>\u548c<code class=\"filename\">.dict</code>\u3002\u5bf9\u4e8e\u67d0\u4e9b\u8bcd\u5178\u6587\u4ef6\uff0c\u8fd8\u9700\u8981\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u5b57\u7b26\u8f6c\u6362\u6210 UTF-8 \u7f16\u7801\uff08\u4f8b\u5982\u632a\u5a01\u8bed\u8bcd\u5178\uff09\uff1a</p>\n<pre class=\"programlisting\">\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.dict nn_NO.dic\n</pre></li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u590d\u5236\u6587\u4ef6\u5230<code class=\"filename\">$SHAREDIR/tsearch_data</code>\u76ee\u5f55</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u6587\u4ef6\u8f7d\u5165\u5230 PostgreSQL\uff1a</p>\n<pre class=\"programlisting\">\nCREATE TEXT SEARCH DICTIONARY english_hunspell (\n    TEMPLATE = ispell,\n    DictFile = en_us,\n    AffFile = en_us,\n    Stopwords = english);\n</pre></li>\n</ul>\n</div>\n<p lang=\"zh\">\u8fd9\u91cc\uff0c<code class=\"literal\">DictFile</code>\u3001<code class=\"literal\">AffFile</code>\u548c<code class=\"literal\">StopWords</code>\u6307\u5b9a\u8bcd\u5178\u3001\u8bcd\u7f00\u548c\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u57fa\u540d\u3002\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u683c\u5f0f\u548c\u524d\u9762\u89e3\u91ca\u7684<code class=\"literal\">simple</code>\u8bcd\u5178\u7c7b\u578b\u76f8\u540c\u3002\u5176\u4ed6\u6587\u4ef6\u7684\u683c\u5f0f\u5728\u8fd9\u91cc\u6ca1\u6709\u6307\u5b9a\uff0c\u4f46\u662f\u4e5f\u53ef\u4ee5\u4ece\u4e0a\u9762\u63d0\u5230\u7684\u7f51\u7ad9\u83b7\u5f97\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u901a\u5e38\u53ea\u80fd\u8bc6\u522b\u6709\u9650\u7684\u8bcd\uff0c\u56e0\u6b64\u5176\u540e\u5e94\u8ddf\u7740\u53e6\u4e00\u4e2a\u8986\u76d6\u8303\u56f4\u66f4\u5e7f\u7684\u8bcd\u5178\uff1b\u4f8b\u5982\uff0c\u4e00\u4e2a Snowball \u8bcd\u5178\uff0c\u5b83\u53ef\u4ee5\u8bc6\u522b\u6240\u6709\u8f93\u5165\u3002</p>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">prefixes\nflag *A:\n    .           &gt;   RE      # As in enter &gt; reenter\nsuffixes\nflag T:\n    E           &gt;   ST      # As in late &gt; latest\n    [^AEIOU]Y   &gt;   -Y,IEST # As in dirty &gt; dirtiest\n    [AEIOU]Y    &gt;   EST     # As in gray &gt; grayest\n    [^EY]       &gt;   EST     # As in small &gt; smallest\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">lapse/ADGRS\nlard/DGRS\nlarge/PRTY\nlark/MRS\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u7684\u683c\u5f0f\u662f\uff1a</p>\n<pre class=\"programlisting\">basic_form/affix_class_name\n</pre>\n<p lang=\"zh\">\u5728<code class=\"filename\">.affix</code>\u6587\u4ef6\u4e2d\uff0c\u6bcf\u4e00\u4e2a\u8bcd\u7f00\u6807\u5fd7\u4ee5\u4e0b\u9762\u7684\u683c\u5f0f\u63cf\u8ff0\uff1a</p>\n<pre class=\"programlisting\">condition &gt; [-stripping_letters,] adding_affix\n</pre>\n<p lang=\"zh\">\u8fd9\u91cc\u7684\u6761\u4ef6\u5177\u6709\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u76f8\u4f3c\u7684\u683c\u5f0f\u3002\u5b83\u53ef\u4ee5\u4f7f\u7528\u5206\u7ec4<code class=\"literal\">[...]</code>\u548c<code class=\"literal\">[^...]</code>\u3002\u4f8b\u5982\uff0c<code class=\"literal\">[AEIOU]Y</code>\u8868\u793a\u8bcd\u7684\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"y\"</code>\u5e76\u4e14\u5012\u6570\u7b2c\u4e8c\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"a\"</code>\u3001<code class=\"literal\">\"e\"</code>\u3001<code class=\"literal\">\"i\"</code>\u3001<code class=\"literal\">\"o\"</code>\u6216\u8005<code class=\"literal\">\"u\"</code>\u3002<code class=\"literal\">[^EY]</code>\u8868\u793a\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u65e2\u4e0d\u662f<code class=\"literal\">\"e\"</code>\u4e5f\u4e0d\u662f<code class=\"literal\">\"y\"</code>\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u652f\u6301\u5212\u5206\u590d\u5408\u8bcd\uff0c\u8fd9\u662f\u4e00\u4e2a\u6709\u7528\u7684\u7279\u6027\u3002\u6ce8\u610f\u8bcd\u7f00\u6587\u4ef6\u5e94\u8be5\u7528<code class=\"literal\">compoundwords controlled</code>\u8bed\u53e5\u6307\u5b9a\u4e00\u4e2a\u7279\u6b8a\u6807\u5fd7\uff0c\u7528\u4e8e\u6807\u8bb0\u8bcd\u5178\u4e2d\u53ef\u4ee5\u53c2\u4e0e\u6784\u6210\u590d\u5408\u8bcd\u7684\u8bcd\uff1a</p>\n<pre class=\"programlisting\">compoundwords  controlled z\n</pre>\n<p lang=\"zh\">\u4e0b\u9762\u662f\u632a\u5a01\u8bed\u7684\u4e00\u4e9b\u793a\u4f8b\uff1a</p>\n<pre class=\"programlisting\">SELECT ts_lexize('norwegian_ispell', 'overbuljongterningpakkmesterassistent');\n   {over,buljong,terning,pakk,mester,assistent}\nSELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk');\n   {sjokoladefabrikk,sjokolade,fabrikk}\n</pre>\n<p lang=\"zh\"><span class=\"application\">MySpell</span>\u683c\u5f0f\u662f<span class=\"application\">Hunspell</span>\u683c\u5f0f\u7684\u4e00\u4e2a\u5b50\u96c6\u3002<span class=\"application\">Hunspell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">PFX A Y 1\nPFX A   0     re         .\nSFX T N 4\nSFX T   0     st         e\nSFX T   y     iest       [^aeiou]y\nSFX T   0     est        [aeiou]y\nSFX T   0     est        [^ey]\n</pre>\n<p lang=\"zh\">\u4e00\u4e2a\u8bcd\u7f00\u7c7b\u7684\u7b2c\u4e00\u884c\u662f\u9996\u90e8\u3002\u9996\u90e8\u540e\u9762\u5217\u51fa\u4e86\u8bcd\u7f00\u89c4\u5219\u7684\u5b57\u6bb5\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u53c2\u6570\u540d\uff08PFX \u6216\u8005 SFX\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u6807\u5fd7\uff08\u8bcd\u7f00\u7c7b\u7684\u540d\u79f0\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4ece\u8be5\u8bcd\u7684\u5f00\u59cb\uff08\u524d\u7f00\uff09\u6216\u8005\u7ed3\u5c3e\uff08\u540e\u7f00\uff09\u5265\u79bb\u5b57\u7b26</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u589e\u52a0\u8bcd\u7f00</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u683c\u5f0f\u7c7b\u4f3c\u7684\u6761\u4ef6\u3002</p>\n</li>\n</ul>\n</div>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u770b\u8d77\u6765\u548c<span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.dict</code>\u6587\u4ef6\u76f8\u4f3c\uff1a</p>\n<pre class=\"programlisting\">larder/M\nlardy/RT\nlarge/RSPMYT\nlargehearted\n</pre>\n<div class=\"note\">\n<h3 class=\"title\" lang=\"zh\">\u6ce8\u610f</h3>\n<p lang=\"zh\"><span class=\"application\">MySpell</span> \u4e0d\u652f\u6301\u590d\u5408\u8bcd\u3002<span class=\"application\">Hunspell</span>\u5219\u5bf9\u590d\u5408\u8bcd\u6709\u66f4\u597d\u7684\u652f\u6301\u3002\u5f53\u524d\uff0c<span class=\"productname\">PostgreSQL</span>\u53ea\u5b9e\u73b0\u4e86 Hunspell \u4e2d\u57fa\u672c\u7684\u590d\u5408\u8bcd\u64cd\u4f5c\u3002</p>\n</div>\n</div>", "manual_path": "/docs/10/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "localization": {"status": "complete", "sources": [{"url": "/docs/10/textsearch-dictionaries.html", "method": "same-major semantic node", "sha256": "c0157f280c8667dde264cddda98e48a2fcb0694fe7a009e90c7c844e3e0c057c", "language": "zh", "matched_nodes": ["#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[4]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/h3[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[11]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[13]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[15]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[16]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[18]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[20]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[22]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[24]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[5]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[6]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[7]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[9]", "#TEXTSEARCH-DICTIONARIES/div[1]/dl[0]/dt[4]"]}], "language": "zh", "original_text": {"/versions/10/description/0": "ispell dictionary", "/versions/10/facts/0/label": "Tmplname", "/versions/10/facts/1/label": "Tmplinit", "/versions/10/facts/2/label": "Tmpllexize"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "0d9c49cfbb6e3e09aa9557cded0d947f3384f9f34b8a7fe91f34117bfb789396"}, "comparison_data": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "comparison_hash": "8b7d546e289f525321c9b7a6612c5fe0397f3f32c93ab170f863a07763c524b0", "manual_language": "zh"}, "11": {"facts": [{"label": "\u6a21\u677f\u540d\u79f0\uff08tmplname\uff09", "value": "ispell"}, {"label": "\u521d\u59cb\u5316\u51fd\u6570\uff08tmplinit\uff09", "value": "dispell_init"}, {"label": "\u8bcd\u6cd5\u5316\u51fd\u6570\uff08tmpllexize\uff09", "value": "dispell_lexize"}], "tables": [], "aliases": [], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "label": "11.22", "major": "11", "channel": "historical", "revision": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0", "source_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0", "catalog_fingerprint": "8f21f4444b7f68923f4762af0eb7937fa2907026e91249483e79050de012c901"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, {"url": "https://pg.center/docs/11/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "path": "textsearch-dictionaries.html", "label": "PostgreSQL 11 English manual", "sha256": "64a862c0e84e4563364a0b25957c82ae3e7f368eb0631cb577a313b24dcf33c5", "language": "en", "original_url": "/docs/11/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY"}], "sections": [], "signature": "", "attributes": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "description": ["ispell \u8bcd\u5178"], "manual_html": "<div class=\"sect2\" id=\"TEXTSEARCH-ISPELL-DICTIONARY\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/11/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY\">12.6.5. <span class=\"application\">Ispell</span> \u8bcd\u5178</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u8bcd\u5178\u6a21\u677f\u652f\u6301<em class=\"firstterm\">\u5f62\u6001\u8bcd\u5178</em>\uff0c\u5b83\u53ef\u4ee5\u628a\u4e00\u4e2a\u8bcd\u7684\u8bb8\u591a\u4e0d\u540c\u8bed\u8a00\u5b66\u5f62\u5f0f\u6b63\u89c4\u5316\u4e3a\u540c\u4e00\u4e2a\u8bcd\u4f4d\u3002\u4f8b\u5982\uff0c\u4e00\u4e2a\u82f1\u8bed <span class=\"application\">Ispell</span> \u8bcd\u5178\u53ef\u4ee5\u5339\u914d\u641c\u7d22\u8bcd <code class=\"literal\">bank</code> \u7684\u6240\u6709\u53d8\u683c\u548c\u53d8\u4f4d\u5f62\u5f0f\uff0c\u4f8b\u5982 <code class=\"literal\">banking</code>\u3001<code class=\"literal\">banked</code>\u3001<code class=\"literal\">banks</code>\u3001<code class=\"literal\">banks'</code> \u548c <code class=\"literal\">bank's</code>\u3002</p>\n<p lang=\"zh\">\u6807\u51c6<span class=\"productname\">PostgreSQL</span>\u53d1\u884c\u7248\u4e0d\u5305\u542b\u4efb\u4f55<span class=\"application\">Ispell</span>\u914d\u7f6e\u6587\u4ef6\u3002\u5927\u91cf\u8bed\u8a00\u7684\u8bcd\u5178\u53ef\u4ece<a class=\"ulink\" href=\"https://www.cs.hmc.edu/~geoff/ispell.html\" target=\"_top\">Ispell</a>\u83b7\u53d6\u3002\u6b64\u5916\uff0c\u8fd8\u652f\u6301\u4e00\u4e9b\u66f4\u73b0\u4ee3\u7684\u8bcd\u5178\u6587\u4ef6\u683c\u5f0f \u2014 <a class=\"ulink\" href=\"https://en.wikipedia.org/wiki/MySpell\" target=\"_top\">MySpell</a> (OO &lt; 2.0.1) \u548c<a class=\"ulink\" href=\"https://hunspell.github.io/\" target=\"_top\">Hunspell</a>(OO &gt;= 2.0.2)\u3002\u5728<a class=\"ulink\" href=\"https://wiki.openoffice.org/wiki/Dictionaries\" target=\"_top\">OpenOffice Wiki</a>\u4e0a\u6709\u5927\u91cf\u8bcd\u5178\u53ef\u7528\u3002</p>\n<p lang=\"zh\">\u8981\u521b\u5efa\u4e00\u4e2a<span class=\"application\">Ispell</span>\u8bcd\u5178\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4e0b\u8f7d\u8bcd\u5178\u914d\u7f6e\u6587\u4ef6\u3002<span class=\"productname\">OpenOffice</span>\u6269\u5c55\u6587\u4ef6\u7684\u6269\u5c55\u540d\u662f<code class=\"filename\">.oxt</code>\u3002\u9700\u8981\u63d0\u53d6<code class=\"filename\">.aff</code>\u548c<code class=\"filename\">.dic</code>\u6587\u4ef6\uff0c\u5c06\u6269\u5c55\u540d\u6539\u4e3a<code class=\"filename\">.affix</code>\u548c<code class=\"filename\">.dict</code>\u3002\u5bf9\u4e8e\u67d0\u4e9b\u8bcd\u5178\u6587\u4ef6\uff0c\u8fd8\u9700\u8981\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u5b57\u7b26\u8f6c\u6362\u6210 UTF-8 \u7f16\u7801\uff08\u4f8b\u5982\u632a\u5a01\u8bed\u8bcd\u5178\uff09\uff1a</p>\n<pre class=\"programlisting\">\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.dict nn_NO.dic\n</pre>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u590d\u5236\u6587\u4ef6\u5230<code class=\"filename\">$SHAREDIR/tsearch_data</code>\u76ee\u5f55</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u6587\u4ef6\u8f7d\u5165\u5230 PostgreSQL\uff1a</p>\n<pre class=\"programlisting\">\nCREATE TEXT SEARCH DICTIONARY english_hunspell (\n    TEMPLATE = ispell,\n    DictFile = en_us,\n    AffFile = en_us,\n    Stopwords = english);\n</pre>\n</li>\n</ul>\n</div>\n<p lang=\"zh\">\u8fd9\u91cc\uff0c<code class=\"literal\">DictFile</code>\u3001<code class=\"literal\">AffFile</code>\u548c<code class=\"literal\">StopWords</code>\u6307\u5b9a\u8bcd\u5178\u3001\u8bcd\u7f00\u548c\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u57fa\u540d\u3002\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u683c\u5f0f\u548c\u524d\u9762\u89e3\u91ca\u7684<code class=\"literal\">simple</code>\u8bcd\u5178\u7c7b\u578b\u76f8\u540c\u3002\u5176\u4ed6\u6587\u4ef6\u7684\u683c\u5f0f\u5728\u8fd9\u91cc\u6ca1\u6709\u6307\u5b9a\uff0c\u4f46\u662f\u4e5f\u53ef\u4ee5\u4ece\u4e0a\u9762\u63d0\u5230\u7684\u7f51\u7ad9\u83b7\u5f97\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u901a\u5e38\u53ea\u80fd\u8bc6\u522b\u6709\u9650\u7684\u8bcd\uff0c\u56e0\u6b64\u5176\u540e\u5e94\u8ddf\u7740\u53e6\u4e00\u4e2a\u8986\u76d6\u8303\u56f4\u66f4\u5e7f\u7684\u8bcd\u5178\uff1b\u4f8b\u5982\uff0c\u4e00\u4e2a Snowball \u8bcd\u5178\uff0c\u5b83\u53ef\u4ee5\u8bc6\u522b\u6240\u6709\u8f93\u5165\u3002</p>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">prefixes\nflag *A:\n    .           &gt;   RE      # As in enter &gt; reenter\nsuffixes\nflag T:\n    E           &gt;   ST      # As in late &gt; latest\n    [^AEIOU]Y   &gt;   -Y,IEST # As in dirty &gt; dirtiest\n    [AEIOU]Y    &gt;   EST     # As in gray &gt; grayest\n    [^EY]       &gt;   EST     # As in small &gt; smallest\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">lapse/ADGRS\nlard/DGRS\nlarge/PRTY\nlark/MRS\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u7684\u683c\u5f0f\u662f\uff1a</p>\n<pre class=\"programlisting\">basic_form/affix_class_name\n</pre>\n<p lang=\"zh\">\u5728<code class=\"filename\">.affix</code>\u6587\u4ef6\u4e2d\uff0c\u6bcf\u4e00\u4e2a\u8bcd\u7f00\u6807\u5fd7\u4ee5\u4e0b\u9762\u7684\u683c\u5f0f\u63cf\u8ff0\uff1a</p>\n<pre class=\"programlisting\">condition &gt; [-stripping_letters,] adding_affix\n</pre>\n<p lang=\"zh\">\u8fd9\u91cc\u7684\u6761\u4ef6\u5177\u6709\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u76f8\u4f3c\u7684\u683c\u5f0f\u3002\u5b83\u53ef\u4ee5\u4f7f\u7528\u5206\u7ec4<code class=\"literal\">[...]</code>\u548c<code class=\"literal\">[^...]</code>\u3002\u4f8b\u5982\uff0c<code class=\"literal\">[AEIOU]Y</code>\u8868\u793a\u8bcd\u7684\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"y\"</code>\u5e76\u4e14\u5012\u6570\u7b2c\u4e8c\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"a\"</code>\u3001<code class=\"literal\">\"e\"</code>\u3001<code class=\"literal\">\"i\"</code>\u3001<code class=\"literal\">\"o\"</code>\u6216\u8005<code class=\"literal\">\"u\"</code>\u3002<code class=\"literal\">[^EY]</code>\u8868\u793a\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u65e2\u4e0d\u662f<code class=\"literal\">\"e\"</code>\u4e5f\u4e0d\u662f<code class=\"literal\">\"y\"</code>\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u652f\u6301\u5212\u5206\u590d\u5408\u8bcd\uff0c\u8fd9\u662f\u4e00\u4e2a\u6709\u7528\u7684\u7279\u6027\u3002\u6ce8\u610f\u8bcd\u7f00\u6587\u4ef6\u5e94\u8be5\u7528<code class=\"literal\">compoundwords controlled</code>\u8bed\u53e5\u6307\u5b9a\u4e00\u4e2a\u7279\u6b8a\u6807\u5fd7\uff0c\u7528\u4e8e\u6807\u8bb0\u8bcd\u5178\u4e2d\u53ef\u4ee5\u53c2\u4e0e\u6784\u6210\u590d\u5408\u8bcd\u7684\u8bcd\uff1a</p>\n<pre class=\"programlisting\">compoundwords  controlled z\n</pre>\n<p lang=\"zh\">\u4e0b\u9762\u662f\u632a\u5a01\u8bed\u7684\u4e00\u4e9b\u793a\u4f8b\uff1a</p>\n<pre class=\"programlisting\">SELECT ts_lexize('norwegian_ispell', 'overbuljongterningpakkmesterassistent');\n   {over,buljong,terning,pakk,mester,assistent}\nSELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk');\n   {sjokoladefabrikk,sjokolade,fabrikk}\n</pre>\n<p lang=\"zh\"><span class=\"application\">MySpell</span>\u683c\u5f0f\u662f<span class=\"application\">Hunspell</span>\u683c\u5f0f\u7684\u4e00\u4e2a\u5b50\u96c6\u3002<span class=\"application\">Hunspell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">PFX A Y 1\nPFX A   0     re         .\nSFX T N 4\nSFX T   0     st         e\nSFX T   y     iest       [^aeiou]y\nSFX T   0     est        [aeiou]y\nSFX T   0     est        [^ey]\n</pre>\n<p lang=\"zh\">\u4e00\u4e2a\u8bcd\u7f00\u7c7b\u7684\u7b2c\u4e00\u884c\u662f\u9996\u90e8\u3002\u9996\u90e8\u540e\u9762\u5217\u51fa\u4e86\u8bcd\u7f00\u89c4\u5219\u7684\u5b57\u6bb5\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u53c2\u6570\u540d\uff08PFX \u6216\u8005 SFX\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u6807\u5fd7\uff08\u8bcd\u7f00\u7c7b\u7684\u540d\u79f0\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4ece\u8be5\u8bcd\u7684\u5f00\u59cb\uff08\u524d\u7f00\uff09\u6216\u8005\u7ed3\u5c3e\uff08\u540e\u7f00\uff09\u5265\u79bb\u5b57\u7b26</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u589e\u52a0\u8bcd\u7f00</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u683c\u5f0f\u7c7b\u4f3c\u7684\u6761\u4ef6\u3002</p>\n</li>\n</ul>\n</div>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u770b\u8d77\u6765\u548c<span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.dict</code>\u6587\u4ef6\u76f8\u4f3c\uff1a</p>\n<pre class=\"programlisting\">larder/M\nlardy/RT\nlarge/RSPMYT\nlargehearted\n</pre>\n<div class=\"note\">\n<h3 class=\"title\" lang=\"zh\">\u6ce8\u610f</h3>\n<p lang=\"zh\"><span class=\"application\">MySpell</span> \u4e0d\u652f\u6301\u590d\u5408\u8bcd\u3002<span class=\"application\">Hunspell</span>\u5219\u5bf9\u590d\u5408\u8bcd\u6709\u66f4\u597d\u7684\u652f\u6301\u3002\u5f53\u524d\uff0c<span class=\"productname\">PostgreSQL</span>\u53ea\u5b9e\u73b0\u4e86 Hunspell \u4e2d\u57fa\u672c\u7684\u590d\u5408\u8bcd\u64cd\u4f5c\u3002</p>\n</div>\n</div>", "manual_path": "/docs/11/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "localization": {"status": "complete", "sources": [{"url": "/docs/11/textsearch-dictionaries.html", "method": "same-major semantic node", "sha256": "d52d2e8077f1105a699bb46869e8b6a646c56eb3206e5486b6b8cf3a571ece59", "language": "zh", "matched_nodes": ["#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[4]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/h3[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[11]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[13]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[15]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[16]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[18]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[20]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[22]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[24]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[5]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[6]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[7]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[9]", "#TEXTSEARCH-DICTIONARIES/div[1]/dl[0]/dt[4]"]}], "language": "zh", "original_text": {"/versions/11/description/0": "ispell dictionary", "/versions/11/facts/0/label": "Tmplname", "/versions/11/facts/1/label": "Tmplinit", "/versions/11/facts/2/label": "Tmpllexize"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "d759bf9dc11b258a437dd411179be7e8c75ad20b90140fc0ae2a1797334c0163"}, "comparison_data": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "comparison_hash": "8b7d546e289f525321c9b7a6612c5fe0397f3f32c93ab170f863a07763c524b0", "manual_language": "zh"}, "12": {"facts": [{"label": "\u6a21\u677f\u540d\u79f0\uff08tmplname\uff09", "value": "ispell"}, {"label": "\u521d\u59cb\u5316\u51fd\u6570\uff08tmplinit\uff09", "value": "dispell_init"}, {"label": "\u8bcd\u6cd5\u5316\u51fd\u6570\uff08tmpllexize\uff09", "value": "dispell_lexize"}], "tables": [], "aliases": [], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "label": "12.22", "major": "12", "channel": "historical", "revision": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b", "source_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b", "catalog_fingerprint": "9f857f4ee4875f9c7de6bfc9df4b757dec8b3a0bb88eadb519c7bd267bd56149"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, {"url": "https://pg.center/docs/12/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "path": "textsearch-dictionaries.html", "label": "PostgreSQL 12 English manual", "sha256": "df18f72cb6bf91875eaeb91ff94177f66f55f2f38fa460f5ba915845d73222fa", "language": "en", "original_url": "/docs/12/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY"}], "sections": [], "signature": "", "attributes": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "description": ["ispell \u8bcd\u5178"], "manual_html": "<div class=\"sect2\" id=\"TEXTSEARCH-ISPELL-DICTIONARY\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/12/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY\">12.6.5. <span class=\"application\">Ispell</span> \u8bcd\u5178</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u8bcd\u5178\u6a21\u677f\u652f\u6301<em class=\"firstterm\">\u5f62\u6001\u8bcd\u5178</em>\uff0c\u5b83\u53ef\u4ee5\u628a\u4e00\u4e2a\u8bcd\u7684\u8bb8\u591a\u4e0d\u540c\u8bed\u8a00\u5b66\u5f62\u5f0f\u6b63\u89c4\u5316\u4e3a\u540c\u4e00\u4e2a\u8bcd\u4f4d\u3002\u4f8b\u5982\uff0c\u4e00\u4e2a\u82f1\u8bed <span class=\"application\">Ispell</span> \u8bcd\u5178\u53ef\u4ee5\u5339\u914d\u641c\u7d22\u8bcd <code class=\"literal\">bank</code> \u7684\u6240\u6709\u53d8\u683c\u548c\u53d8\u4f4d\u5f62\u5f0f\uff0c\u4f8b\u5982 <code class=\"literal\">banking</code>\u3001<code class=\"literal\">banked</code>\u3001<code class=\"literal\">banks</code>\u3001<code class=\"literal\">banks'</code> \u548c <code class=\"literal\">bank's</code>\u3002</p>\n<p lang=\"zh\">\u6807\u51c6<span class=\"productname\">PostgreSQL</span>\u53d1\u884c\u7248\u4e0d\u5305\u542b\u4efb\u4f55<span class=\"application\">Ispell</span>\u914d\u7f6e\u6587\u4ef6\u3002\u5927\u91cf\u8bed\u8a00\u7684\u8bcd\u5178\u53ef\u4ece<a class=\"ulink\" href=\"https://www.cs.hmc.edu/~geoff/ispell.html\" target=\"_top\">Ispell</a>\u83b7\u53d6\u3002\u6b64\u5916\uff0c\u8fd8\u652f\u6301\u4e00\u4e9b\u66f4\u73b0\u4ee3\u7684\u8bcd\u5178\u6587\u4ef6\u683c\u5f0f \u2014 <a class=\"ulink\" href=\"https://en.wikipedia.org/wiki/MySpell\" target=\"_top\">MySpell</a> (OO &lt; 2.0.1) \u548c<a class=\"ulink\" href=\"https://hunspell.github.io/\" target=\"_top\">Hunspell</a>(OO &gt;= 2.0.2)\u3002\u5728<a class=\"ulink\" href=\"https://wiki.openoffice.org/wiki/Dictionaries\" target=\"_top\">OpenOffice Wiki</a>\u4e0a\u6709\u5927\u91cf\u8bcd\u5178\u53ef\u7528\u3002</p>\n<p lang=\"zh\">\u8981\u521b\u5efa\u4e00\u4e2a<span class=\"application\">Ispell</span>\u8bcd\u5178\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4e0b\u8f7d\u8bcd\u5178\u914d\u7f6e\u6587\u4ef6\u3002<span class=\"productname\">OpenOffice</span>\u6269\u5c55\u6587\u4ef6\u7684\u6269\u5c55\u540d\u662f<code class=\"filename\">.oxt</code>\u3002\u9700\u8981\u63d0\u53d6<code class=\"filename\">.aff</code>\u548c<code class=\"filename\">.dic</code>\u6587\u4ef6\uff0c\u5c06\u6269\u5c55\u540d\u6539\u4e3a<code class=\"filename\">.affix</code>\u548c<code class=\"filename\">.dict</code>\u3002\u5bf9\u4e8e\u67d0\u4e9b\u8bcd\u5178\u6587\u4ef6\uff0c\u8fd8\u9700\u8981\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u5b57\u7b26\u8f6c\u6362\u6210 UTF-8 \u7f16\u7801\uff08\u4f8b\u5982\u632a\u5a01\u8bed\u8bcd\u5178\uff09\uff1a</p>\n<pre class=\"programlisting\">\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.dict nn_NO.dic\n</pre>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u590d\u5236\u6587\u4ef6\u5230<code class=\"filename\">$SHAREDIR/tsearch_data</code>\u76ee\u5f55</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u6587\u4ef6\u8f7d\u5165\u5230 PostgreSQL\uff1a</p>\n<pre class=\"programlisting\">\nCREATE TEXT SEARCH DICTIONARY english_hunspell (\n    TEMPLATE = ispell,\n    DictFile = en_us,\n    AffFile = en_us,\n    Stopwords = english);\n</pre>\n</li>\n</ul>\n</div>\n<p lang=\"zh\">\u8fd9\u91cc\uff0c<code class=\"literal\">DictFile</code>\u3001<code class=\"literal\">AffFile</code>\u548c<code class=\"literal\">StopWords</code>\u6307\u5b9a\u8bcd\u5178\u3001\u8bcd\u7f00\u548c\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u57fa\u540d\u3002\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u683c\u5f0f\u548c\u524d\u9762\u89e3\u91ca\u7684<code class=\"literal\">simple</code>\u8bcd\u5178\u7c7b\u578b\u76f8\u540c\u3002\u5176\u4ed6\u6587\u4ef6\u7684\u683c\u5f0f\u5728\u8fd9\u91cc\u6ca1\u6709\u6307\u5b9a\uff0c\u4f46\u662f\u4e5f\u53ef\u4ee5\u4ece\u4e0a\u9762\u63d0\u5230\u7684\u7f51\u7ad9\u83b7\u5f97\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u901a\u5e38\u53ea\u80fd\u8bc6\u522b\u6709\u9650\u7684\u8bcd\uff0c\u56e0\u6b64\u5176\u540e\u5e94\u8ddf\u7740\u53e6\u4e00\u4e2a\u8986\u76d6\u8303\u56f4\u66f4\u5e7f\u7684\u8bcd\u5178\uff1b\u4f8b\u5982\uff0c\u4e00\u4e2a Snowball \u8bcd\u5178\uff0c\u5b83\u53ef\u4ee5\u8bc6\u522b\u6240\u6709\u8f93\u5165\u3002</p>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">prefixes\nflag *A:\n    .           &gt;   RE      # As in enter &gt; reenter\nsuffixes\nflag T:\n    E           &gt;   ST      # As in late &gt; latest\n    [^AEIOU]Y   &gt;   -Y,IEST # As in dirty &gt; dirtiest\n    [AEIOU]Y    &gt;   EST     # As in gray &gt; grayest\n    [^EY]       &gt;   EST     # As in small &gt; smallest\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">lapse/ADGRS\nlard/DGRS\nlarge/PRTY\nlark/MRS\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u7684\u683c\u5f0f\u662f\uff1a</p>\n<pre class=\"programlisting\">basic_form/affix_class_name\n</pre>\n<p lang=\"zh\">\u5728<code class=\"filename\">.affix</code>\u6587\u4ef6\u4e2d\uff0c\u6bcf\u4e00\u4e2a\u8bcd\u7f00\u6807\u5fd7\u4ee5\u4e0b\u9762\u7684\u683c\u5f0f\u63cf\u8ff0\uff1a</p>\n<pre class=\"programlisting\">condition &gt; [-stripping_letters,] adding_affix\n</pre>\n<p lang=\"zh\">\u8fd9\u91cc\u7684\u6761\u4ef6\u5177\u6709\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u76f8\u4f3c\u7684\u683c\u5f0f\u3002\u5b83\u53ef\u4ee5\u4f7f\u7528\u5206\u7ec4<code class=\"literal\">[...]</code>\u548c<code class=\"literal\">[^...]</code>\u3002\u4f8b\u5982\uff0c<code class=\"literal\">[AEIOU]Y</code>\u8868\u793a\u8bcd\u7684\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"y\"</code>\u5e76\u4e14\u5012\u6570\u7b2c\u4e8c\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"a\"</code>\u3001<code class=\"literal\">\"e\"</code>\u3001<code class=\"literal\">\"i\"</code>\u3001<code class=\"literal\">\"o\"</code>\u6216\u8005<code class=\"literal\">\"u\"</code>\u3002<code class=\"literal\">[^EY]</code>\u8868\u793a\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u65e2\u4e0d\u662f<code class=\"literal\">\"e\"</code>\u4e5f\u4e0d\u662f<code class=\"literal\">\"y\"</code>\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u652f\u6301\u5212\u5206\u590d\u5408\u8bcd\uff0c\u8fd9\u662f\u4e00\u4e2a\u6709\u7528\u7684\u7279\u6027\u3002\u6ce8\u610f\u8bcd\u7f00\u6587\u4ef6\u5e94\u8be5\u7528<code class=\"literal\">compoundwords controlled</code>\u8bed\u53e5\u6307\u5b9a\u4e00\u4e2a\u7279\u6b8a\u6807\u5fd7\uff0c\u7528\u4e8e\u6807\u8bb0\u8bcd\u5178\u4e2d\u53ef\u4ee5\u53c2\u4e0e\u6784\u6210\u590d\u5408\u8bcd\u7684\u8bcd\uff1a</p>\n<pre class=\"programlisting\">compoundwords  controlled z\n</pre>\n<p lang=\"zh\">\u4e0b\u9762\u662f\u632a\u5a01\u8bed\u7684\u4e00\u4e9b\u793a\u4f8b\uff1a</p>\n<pre class=\"programlisting\">SELECT ts_lexize('norwegian_ispell', 'overbuljongterningpakkmesterassistent');\n   {over,buljong,terning,pakk,mester,assistent}\nSELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk');\n   {sjokoladefabrikk,sjokolade,fabrikk}\n</pre>\n<p lang=\"zh\"><span class=\"application\">MySpell</span>\u683c\u5f0f\u662f<span class=\"application\">Hunspell</span>\u683c\u5f0f\u7684\u4e00\u4e2a\u5b50\u96c6\u3002<span class=\"application\">Hunspell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">PFX A Y 1\nPFX A   0     re         .\nSFX T N 4\nSFX T   0     st         e\nSFX T   y     iest       [^aeiou]y\nSFX T   0     est        [aeiou]y\nSFX T   0     est        [^ey]\n</pre>\n<p lang=\"zh\">\u4e00\u4e2a\u8bcd\u7f00\u7c7b\u7684\u7b2c\u4e00\u884c\u662f\u9996\u90e8\u3002\u9996\u90e8\u540e\u9762\u5217\u51fa\u4e86\u8bcd\u7f00\u89c4\u5219\u7684\u5b57\u6bb5\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u53c2\u6570\u540d\uff08PFX \u6216\u8005 SFX\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u6807\u5fd7\uff08\u8bcd\u7f00\u7c7b\u7684\u540d\u79f0\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4ece\u8be5\u8bcd\u7684\u5f00\u59cb\uff08\u524d\u7f00\uff09\u6216\u8005\u7ed3\u5c3e\uff08\u540e\u7f00\uff09\u5265\u79bb\u5b57\u7b26</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u589e\u52a0\u8bcd\u7f00</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u683c\u5f0f\u7c7b\u4f3c\u7684\u6761\u4ef6\u3002</p>\n</li>\n</ul>\n</div>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u770b\u8d77\u6765\u548c<span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.dict</code>\u6587\u4ef6\u76f8\u4f3c\uff1a</p>\n<pre class=\"programlisting\">larder/M\nlardy/RT\nlarge/RSPMYT\nlargehearted\n</pre>\n<div class=\"note\">\n<h3 class=\"title\" lang=\"zh\">\u6ce8\u610f</h3>\n<p lang=\"zh\"><span class=\"application\">MySpell</span> \u4e0d\u652f\u6301\u590d\u5408\u8bcd\u3002<span class=\"application\">Hunspell</span>\u5219\u5bf9\u590d\u5408\u8bcd\u6709\u66f4\u597d\u7684\u652f\u6301\u3002\u5f53\u524d\uff0c<span class=\"productname\">PostgreSQL</span>\u53ea\u5b9e\u73b0\u4e86 Hunspell \u4e2d\u57fa\u672c\u7684\u590d\u5408\u8bcd\u64cd\u4f5c\u3002</p>\n</div>\n</div>", "manual_path": "/docs/12/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "localization": {"status": "complete", "sources": [{"url": "/docs/12/textsearch-dictionaries.html", "method": "same-major semantic node", "sha256": "eb039d3d941f91d46f2fbcbf543928e06f02b7a99611256dd78f53ef2b9c616f", "language": "zh", "matched_nodes": ["#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[4]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/h3[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[11]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[13]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[15]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[16]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[18]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[20]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[22]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[24]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[5]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[6]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[7]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[9]", "#TEXTSEARCH-DICTIONARIES/div[1]/dl[0]/dt[4]"]}], "language": "zh", "original_text": {"/versions/12/description/0": "ispell dictionary", "/versions/12/facts/0/label": "Tmplname", "/versions/12/facts/1/label": "Tmplinit", "/versions/12/facts/2/label": "Tmpllexize"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "727a14a4973973db9bbf9877d3e2f236d6cb73c676b7a8116b6adecef6990770"}, "comparison_data": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "comparison_hash": "8b7d546e289f525321c9b7a6612c5fe0397f3f32c93ab170f863a07763c524b0", "manual_language": "zh"}, "13": {"facts": [{"label": "\u6a21\u677f\u540d\u79f0\uff08tmplname\uff09", "value": "ispell"}, {"label": "\u521d\u59cb\u5316\u51fd\u6570\uff08tmplinit\uff09", "value": "dispell_init"}, {"label": "\u8bcd\u6cd5\u5316\u51fd\u6570\uff08tmpllexize\uff09", "value": "dispell_lexize"}], "tables": [], "aliases": [], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "label": "13.23", "major": "13", "channel": "historical", "revision": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6", "source_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6", "catalog_fingerprint": "c7015c845255c9d721c547c8ab9ef37825d332588c9691d982e6906b7d571002"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, {"url": "https://pg.center/docs/13/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "path": "textsearch-dictionaries.html", "label": "PostgreSQL 13 English manual", "sha256": "617bc0fe217c1989535b72bb9d242cd58fa884b2dcad4c9c027392c653f94c04", "language": "en", "original_url": "/docs/13/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY"}], "sections": [], "signature": "", "attributes": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "description": ["ispell \u8bcd\u5178"], "manual_html": "<div class=\"sect2\" id=\"TEXTSEARCH-ISPELL-DICTIONARY\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/13/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY\">12.6.5. <span class=\"application\">Ispell</span> \u8bcd\u5178</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u8bcd\u5178\u6a21\u677f\u652f\u6301<em class=\"firstterm\">\u5f62\u6001\u8bcd\u5178</em>\uff0c\u5b83\u53ef\u4ee5\u628a\u4e00\u4e2a\u8bcd\u7684\u8bb8\u591a\u4e0d\u540c\u8bed\u8a00\u5b66\u5f62\u5f0f\u6b63\u89c4\u5316\u4e3a\u540c\u4e00\u4e2a\u8bcd\u4f4d\u3002\u4f8b\u5982\uff0c\u4e00\u4e2a\u82f1\u8bed <span class=\"application\">Ispell</span> \u8bcd\u5178\u53ef\u4ee5\u5339\u914d\u641c\u7d22\u8bcd <code class=\"literal\">bank</code> \u7684\u6240\u6709\u53d8\u683c\u548c\u53d8\u4f4d\u5f62\u5f0f\uff0c\u4f8b\u5982 <code class=\"literal\">banking</code>\u3001<code class=\"literal\">banked</code>\u3001<code class=\"literal\">banks</code>\u3001<code class=\"literal\">banks'</code> \u548c <code class=\"literal\">bank's</code>\u3002</p>\n<p lang=\"zh\">\u6807\u51c6<span class=\"productname\">PostgreSQL</span>\u53d1\u884c\u7248\u4e0d\u5305\u542b\u4efb\u4f55<span class=\"application\">Ispell</span>\u914d\u7f6e\u6587\u4ef6\u3002\u5927\u91cf\u8bed\u8a00\u7684\u8bcd\u5178\u53ef\u4ece<a class=\"ulink\" href=\"https://www.cs.hmc.edu/~geoff/ispell.html\" target=\"_top\">Ispell</a>\u83b7\u53d6\u3002\u6b64\u5916\uff0c\u8fd8\u652f\u6301\u4e00\u4e9b\u66f4\u73b0\u4ee3\u7684\u8bcd\u5178\u6587\u4ef6\u683c\u5f0f \u2014 <a class=\"ulink\" href=\"https://en.wikipedia.org/wiki/MySpell\" target=\"_top\">MySpell</a> (OO &lt; 2.0.1) \u548c<a class=\"ulink\" href=\"https://hunspell.github.io/\" target=\"_top\">Hunspell</a>(OO &gt;= 2.0.2)\u3002\u5728<a class=\"ulink\" href=\"https://wiki.openoffice.org/wiki/Dictionaries\" target=\"_top\">OpenOffice Wiki</a>\u4e0a\u6709\u5927\u91cf\u8bcd\u5178\u53ef\u7528\u3002</p>\n<p lang=\"zh\">\u8981\u521b\u5efa\u4e00\u4e2a<span class=\"application\">Ispell</span>\u8bcd\u5178\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4e0b\u8f7d\u8bcd\u5178\u914d\u7f6e\u6587\u4ef6\u3002<span class=\"productname\">OpenOffice</span>\u6269\u5c55\u6587\u4ef6\u7684\u6269\u5c55\u540d\u662f<code class=\"filename\">.oxt</code>\u3002\u9700\u8981\u63d0\u53d6<code class=\"filename\">.aff</code>\u548c<code class=\"filename\">.dic</code>\u6587\u4ef6\uff0c\u5c06\u6269\u5c55\u540d\u6539\u4e3a<code class=\"filename\">.affix</code>\u548c<code class=\"filename\">.dict</code>\u3002\u5bf9\u4e8e\u67d0\u4e9b\u8bcd\u5178\u6587\u4ef6\uff0c\u8fd8\u9700\u8981\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u5b57\u7b26\u8f6c\u6362\u6210 UTF-8 \u7f16\u7801\uff08\u4f8b\u5982\u632a\u5a01\u8bed\u8bcd\u5178\uff09\uff1a</p>\n<pre class=\"programlisting\">\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.dict nn_NO.dic\n</pre>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u590d\u5236\u6587\u4ef6\u5230<code class=\"filename\">$SHAREDIR/tsearch_data</code>\u76ee\u5f55</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u6587\u4ef6\u8f7d\u5165\u5230 PostgreSQL\uff1a</p>\n<pre class=\"programlisting\">\nCREATE TEXT SEARCH DICTIONARY english_hunspell (\n    TEMPLATE = ispell,\n    DictFile = en_us,\n    AffFile = en_us,\n    Stopwords = english);\n</pre>\n</li>\n</ul>\n</div>\n<p lang=\"zh\">\u8fd9\u91cc\uff0c<code class=\"literal\">DictFile</code>\u3001<code class=\"literal\">AffFile</code>\u548c<code class=\"literal\">StopWords</code>\u6307\u5b9a\u8bcd\u5178\u3001\u8bcd\u7f00\u548c\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u57fa\u540d\u3002\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u683c\u5f0f\u548c\u524d\u9762\u89e3\u91ca\u7684<code class=\"literal\">simple</code>\u8bcd\u5178\u7c7b\u578b\u76f8\u540c\u3002\u5176\u4ed6\u6587\u4ef6\u7684\u683c\u5f0f\u5728\u8fd9\u91cc\u6ca1\u6709\u6307\u5b9a\uff0c\u4f46\u662f\u4e5f\u53ef\u4ee5\u4ece\u4e0a\u9762\u63d0\u5230\u7684\u7f51\u7ad9\u83b7\u5f97\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u901a\u5e38\u53ea\u80fd\u8bc6\u522b\u6709\u9650\u7684\u8bcd\uff0c\u56e0\u6b64\u5176\u540e\u5e94\u8ddf\u7740\u53e6\u4e00\u4e2a\u8986\u76d6\u8303\u56f4\u66f4\u5e7f\u7684\u8bcd\u5178\uff1b\u4f8b\u5982\uff0c\u4e00\u4e2a Snowball \u8bcd\u5178\uff0c\u5b83\u53ef\u4ee5\u8bc6\u522b\u6240\u6709\u8f93\u5165\u3002</p>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">prefixes\nflag *A:\n    .           &gt;   RE      # As in enter &gt; reenter\nsuffixes\nflag T:\n    E           &gt;   ST      # As in late &gt; latest\n    [^AEIOU]Y   &gt;   -Y,IEST # As in dirty &gt; dirtiest\n    [AEIOU]Y    &gt;   EST     # As in gray &gt; grayest\n    [^EY]       &gt;   EST     # As in small &gt; smallest\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">lapse/ADGRS\nlard/DGRS\nlarge/PRTY\nlark/MRS\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u7684\u683c\u5f0f\u662f\uff1a</p>\n<pre class=\"programlisting\">basic_form/affix_class_name\n</pre>\n<p lang=\"zh\">\u5728<code class=\"filename\">.affix</code>\u6587\u4ef6\u4e2d\uff0c\u6bcf\u4e00\u4e2a\u8bcd\u7f00\u6807\u5fd7\u4ee5\u4e0b\u9762\u7684\u683c\u5f0f\u63cf\u8ff0\uff1a</p>\n<pre class=\"programlisting\">condition &gt; [-stripping_letters,] adding_affix\n</pre>\n<p lang=\"zh\">\u8fd9\u91cc\u7684\u6761\u4ef6\u5177\u6709\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u76f8\u4f3c\u7684\u683c\u5f0f\u3002\u5b83\u53ef\u4ee5\u4f7f\u7528\u5206\u7ec4<code class=\"literal\">[...]</code>\u548c<code class=\"literal\">[^...]</code>\u3002\u4f8b\u5982\uff0c<code class=\"literal\">[AEIOU]Y</code>\u8868\u793a\u8bcd\u7684\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"y\"</code>\u5e76\u4e14\u5012\u6570\u7b2c\u4e8c\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"a\"</code>\u3001<code class=\"literal\">\"e\"</code>\u3001<code class=\"literal\">\"i\"</code>\u3001<code class=\"literal\">\"o\"</code>\u6216\u8005<code class=\"literal\">\"u\"</code>\u3002<code class=\"literal\">[^EY]</code>\u8868\u793a\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u65e2\u4e0d\u662f<code class=\"literal\">\"e\"</code>\u4e5f\u4e0d\u662f<code class=\"literal\">\"y\"</code>\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u652f\u6301\u5212\u5206\u590d\u5408\u8bcd\uff0c\u8fd9\u662f\u4e00\u4e2a\u6709\u7528\u7684\u7279\u6027\u3002\u6ce8\u610f\u8bcd\u7f00\u6587\u4ef6\u5e94\u8be5\u7528<code class=\"literal\">compoundwords controlled</code>\u8bed\u53e5\u6307\u5b9a\u4e00\u4e2a\u7279\u6b8a\u6807\u5fd7\uff0c\u7528\u4e8e\u6807\u8bb0\u8bcd\u5178\u4e2d\u53ef\u4ee5\u53c2\u4e0e\u6784\u6210\u590d\u5408\u8bcd\u7684\u8bcd\uff1a</p>\n<pre class=\"programlisting\">compoundwords  controlled z\n</pre>\n<p lang=\"zh\">\u4e0b\u9762\u662f\u632a\u5a01\u8bed\u7684\u4e00\u4e9b\u793a\u4f8b\uff1a</p>\n<pre class=\"programlisting\">SELECT ts_lexize('norwegian_ispell', 'overbuljongterningpakkmesterassistent');\n   {over,buljong,terning,pakk,mester,assistent}\nSELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk');\n   {sjokoladefabrikk,sjokolade,fabrikk}\n</pre>\n<p lang=\"zh\"><span class=\"application\">MySpell</span>\u683c\u5f0f\u662f<span class=\"application\">Hunspell</span>\u683c\u5f0f\u7684\u4e00\u4e2a\u5b50\u96c6\u3002<span class=\"application\">Hunspell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">PFX A Y 1\nPFX A   0     re         .\nSFX T N 4\nSFX T   0     st         e\nSFX T   y     iest       [^aeiou]y\nSFX T   0     est        [aeiou]y\nSFX T   0     est        [^ey]\n</pre>\n<p lang=\"zh\">\u4e00\u4e2a\u8bcd\u7f00\u7c7b\u7684\u7b2c\u4e00\u884c\u662f\u9996\u90e8\u3002\u9996\u90e8\u540e\u9762\u5217\u51fa\u4e86\u8bcd\u7f00\u89c4\u5219\u7684\u5b57\u6bb5\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u53c2\u6570\u540d\uff08PFX \u6216\u8005 SFX\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u6807\u5fd7\uff08\u8bcd\u7f00\u7c7b\u7684\u540d\u79f0\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4ece\u8be5\u8bcd\u7684\u5f00\u59cb\uff08\u524d\u7f00\uff09\u6216\u8005\u7ed3\u5c3e\uff08\u540e\u7f00\uff09\u5265\u79bb\u5b57\u7b26</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u589e\u52a0\u8bcd\u7f00</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u683c\u5f0f\u7c7b\u4f3c\u7684\u6761\u4ef6\u3002</p>\n</li>\n</ul>\n</div>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u770b\u8d77\u6765\u548c<span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.dict</code>\u6587\u4ef6\u76f8\u4f3c\uff1a</p>\n<pre class=\"programlisting\">larder/M\nlardy/RT\nlarge/RSPMYT\nlargehearted\n</pre>\n<div class=\"note\">\n<h3 class=\"title\" lang=\"zh\">\u6ce8\u610f</h3>\n<p lang=\"zh\"><span class=\"application\">MySpell</span> \u4e0d\u652f\u6301\u590d\u5408\u8bcd\u3002<span class=\"application\">Hunspell</span>\u5219\u5bf9\u590d\u5408\u8bcd\u6709\u66f4\u597d\u7684\u652f\u6301\u3002\u5f53\u524d\uff0c<span class=\"productname\">PostgreSQL</span>\u53ea\u5b9e\u73b0\u4e86 Hunspell \u4e2d\u57fa\u672c\u7684\u590d\u5408\u8bcd\u64cd\u4f5c\u3002</p>\n</div>\n</div>", "manual_path": "/docs/13/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "localization": {"status": "complete", "sources": [{"url": "/docs/13/textsearch-dictionaries.html", "method": "same-major semantic node", "sha256": "c7e699ef8c49c765eb3e1103893bd4f0d22be3cad4ebeecdb7963d868dab3d5c", "language": "zh", "matched_nodes": ["#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[4]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/h3[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[11]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[13]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[15]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[16]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[18]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[20]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[22]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[24]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[5]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[6]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[7]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[9]", "#TEXTSEARCH-DICTIONARIES/div[1]/dl[0]/dt[4]"]}], "language": "zh", "original_text": {"/versions/13/description/0": "ispell dictionary", "/versions/13/facts/0/label": "Tmplname", "/versions/13/facts/1/label": "Tmplinit", "/versions/13/facts/2/label": "Tmpllexize"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "fe8ce6d136859f01320cb224bb5ae165a24cf28acefd972012b1d978b7e66394"}, "comparison_data": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "comparison_hash": "8b7d546e289f525321c9b7a6612c5fe0397f3f32c93ab170f863a07763c524b0", "manual_language": "zh"}, "14": {"facts": [{"label": "\u6a21\u677f\u540d\u79f0\uff08tmplname\uff09", "value": "ispell"}, {"label": "\u521d\u59cb\u5316\u51fd\u6570\uff08tmplinit\uff09", "value": "dispell_init"}, {"label": "\u8bcd\u6cd5\u5316\u51fd\u6570\uff08tmpllexize\uff09", "value": "dispell_lexize"}], "tables": [], "aliases": [], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "label": "14.24", "major": "14", "channel": "stable", "revision": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897", "source_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897", "catalog_fingerprint": "b272e6a82e4c46efda81c3a6a4cdf7de6a83dfff7f02f226a392fbe9acdd3adb"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, {"url": "https://pg.center/docs/14/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "path": "textsearch-dictionaries.html", "label": "PostgreSQL 14 English manual", "sha256": "09da9246ae189f5e996c5d28d3219abd42110b6cfb7f40dc6de950ebad61bb3b", "language": "en", "original_url": "/docs/14/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY"}], "sections": [], "signature": "", "attributes": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "description": ["ispell \u8bcd\u5178"], "manual_html": "<div class=\"sect2\" id=\"TEXTSEARCH-ISPELL-DICTIONARY\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/14/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY\">12.6.5. <span class=\"application\">Ispell</span> \u8bcd\u5178</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u8bcd\u5178\u6a21\u677f\u652f\u6301<em class=\"firstterm\">\u5f62\u6001\u8bcd\u5178</em>\uff0c\u5b83\u53ef\u4ee5\u628a\u4e00\u4e2a\u8bcd\u7684\u8bb8\u591a\u4e0d\u540c\u8bed\u8a00\u5b66\u5f62\u5f0f\u6b63\u89c4\u5316\u4e3a\u540c\u4e00\u4e2a\u8bcd\u4f4d\u3002\u4f8b\u5982\uff0c\u4e00\u4e2a\u82f1\u8bed <span class=\"application\">Ispell</span> \u8bcd\u5178\u53ef\u4ee5\u5339\u914d\u641c\u7d22\u8bcd <code class=\"literal\">bank</code> \u7684\u6240\u6709\u53d8\u683c\u548c\u53d8\u4f4d\u5f62\u5f0f\uff0c\u4f8b\u5982 <code class=\"literal\">banking</code>\u3001<code class=\"literal\">banked</code>\u3001<code class=\"literal\">banks</code>\u3001<code class=\"literal\">banks'</code> \u548c <code class=\"literal\">bank's</code>\u3002</p>\n<p lang=\"zh\">\u6807\u51c6<span class=\"productname\">PostgreSQL</span>\u53d1\u884c\u7248\u4e0d\u5305\u542b\u4efb\u4f55<span class=\"application\">Ispell</span>\u914d\u7f6e\u6587\u4ef6\u3002\u5927\u91cf\u8bed\u8a00\u7684\u8bcd\u5178\u53ef\u4ece<a class=\"ulink\" href=\"https://www.cs.hmc.edu/~geoff/ispell.html\" target=\"_top\">Ispell</a>\u83b7\u53d6\u3002\u6b64\u5916\uff0c\u8fd8\u652f\u6301\u4e00\u4e9b\u66f4\u73b0\u4ee3\u7684\u8bcd\u5178\u6587\u4ef6\u683c\u5f0f \u2014 <a class=\"ulink\" href=\"https://en.wikipedia.org/wiki/MySpell\" target=\"_top\">MySpell</a> (OO &lt; 2.0.1) \u548c<a class=\"ulink\" href=\"https://hunspell.github.io/\" target=\"_top\">Hunspell</a>(OO &gt;= 2.0.2)\u3002\u5728<a class=\"ulink\" href=\"https://wiki.openoffice.org/wiki/Dictionaries\" target=\"_top\">OpenOffice Wiki</a>\u4e0a\u6709\u5927\u91cf\u8bcd\u5178\u53ef\u7528\u3002</p>\n<p lang=\"zh\">\u8981\u521b\u5efa\u4e00\u4e2a<span class=\"application\">Ispell</span>\u8bcd\u5178\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4e0b\u8f7d\u8bcd\u5178\u914d\u7f6e\u6587\u4ef6\u3002<span class=\"productname\">OpenOffice</span>\u6269\u5c55\u6587\u4ef6\u7684\u6269\u5c55\u540d\u662f<code class=\"filename\">.oxt</code>\u3002\u9700\u8981\u63d0\u53d6<code class=\"filename\">.aff</code>\u548c<code class=\"filename\">.dic</code>\u6587\u4ef6\uff0c\u5c06\u6269\u5c55\u540d\u6539\u4e3a<code class=\"filename\">.affix</code>\u548c<code class=\"filename\">.dict</code>\u3002\u5bf9\u4e8e\u67d0\u4e9b\u8bcd\u5178\u6587\u4ef6\uff0c\u8fd8\u9700\u8981\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u5b57\u7b26\u8f6c\u6362\u6210 UTF-8 \u7f16\u7801\uff08\u4f8b\u5982\u632a\u5a01\u8bed\u8bcd\u5178\uff09\uff1a</p>\n<pre class=\"programlisting\">\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.dict nn_NO.dic\n</pre>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u590d\u5236\u6587\u4ef6\u5230<code class=\"filename\">$SHAREDIR/tsearch_data</code>\u76ee\u5f55</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u6587\u4ef6\u8f7d\u5165\u5230 PostgreSQL\uff1a</p>\n<pre class=\"programlisting\">\nCREATE TEXT SEARCH DICTIONARY english_hunspell (\n    TEMPLATE = ispell,\n    DictFile = en_us,\n    AffFile = en_us,\n    Stopwords = english);\n</pre>\n</li>\n</ul>\n</div>\n<p lang=\"zh\">\u8fd9\u91cc\uff0c<code class=\"literal\">DictFile</code>\u3001<code class=\"literal\">AffFile</code>\u548c<code class=\"literal\">StopWords</code>\u6307\u5b9a\u8bcd\u5178\u3001\u8bcd\u7f00\u548c\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u57fa\u540d\u3002\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u683c\u5f0f\u548c\u524d\u9762\u89e3\u91ca\u7684<code class=\"literal\">simple</code>\u8bcd\u5178\u7c7b\u578b\u76f8\u540c\u3002\u5176\u4ed6\u6587\u4ef6\u7684\u683c\u5f0f\u5728\u8fd9\u91cc\u6ca1\u6709\u6307\u5b9a\uff0c\u4f46\u662f\u4e5f\u53ef\u4ee5\u4ece\u4e0a\u9762\u63d0\u5230\u7684\u7f51\u7ad9\u83b7\u5f97\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u901a\u5e38\u53ea\u80fd\u8bc6\u522b\u6709\u9650\u7684\u8bcd\uff0c\u56e0\u6b64\u5176\u540e\u5e94\u8ddf\u7740\u53e6\u4e00\u4e2a\u8986\u76d6\u8303\u56f4\u66f4\u5e7f\u7684\u8bcd\u5178\uff1b\u4f8b\u5982\uff0c\u4e00\u4e2a Snowball \u8bcd\u5178\uff0c\u5b83\u53ef\u4ee5\u8bc6\u522b\u6240\u6709\u8f93\u5165\u3002</p>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">prefixes\nflag *A:\n    .           &gt;   RE      # As in enter &gt; reenter\nsuffixes\nflag T:\n    E           &gt;   ST      # As in late &gt; latest\n    [^AEIOU]Y   &gt;   -Y,IEST # As in dirty &gt; dirtiest\n    [AEIOU]Y    &gt;   EST     # As in gray &gt; grayest\n    [^EY]       &gt;   EST     # As in small &gt; smallest\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">lapse/ADGRS\nlard/DGRS\nlarge/PRTY\nlark/MRS\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u7684\u683c\u5f0f\u662f\uff1a</p>\n<pre class=\"programlisting\">basic_form/affix_class_name\n</pre>\n<p lang=\"zh\">\u5728<code class=\"filename\">.affix</code>\u6587\u4ef6\u4e2d\uff0c\u6bcf\u4e00\u4e2a\u8bcd\u7f00\u6807\u5fd7\u4ee5\u4e0b\u9762\u7684\u683c\u5f0f\u63cf\u8ff0\uff1a</p>\n<pre class=\"programlisting\">condition &gt; [-stripping_letters,] adding_affix\n</pre>\n<p lang=\"zh\">\u8fd9\u91cc\u7684\u6761\u4ef6\u5177\u6709\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u76f8\u4f3c\u7684\u683c\u5f0f\u3002\u5b83\u53ef\u4ee5\u4f7f\u7528\u5206\u7ec4<code class=\"literal\">[...]</code>\u548c<code class=\"literal\">[^...]</code>\u3002\u4f8b\u5982\uff0c<code class=\"literal\">[AEIOU]Y</code>\u8868\u793a\u8bcd\u7684\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"y\"</code>\u5e76\u4e14\u5012\u6570\u7b2c\u4e8c\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"a\"</code>\u3001<code class=\"literal\">\"e\"</code>\u3001<code class=\"literal\">\"i\"</code>\u3001<code class=\"literal\">\"o\"</code>\u6216\u8005<code class=\"literal\">\"u\"</code>\u3002<code class=\"literal\">[^EY]</code>\u8868\u793a\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u65e2\u4e0d\u662f<code class=\"literal\">\"e\"</code>\u4e5f\u4e0d\u662f<code class=\"literal\">\"y\"</code>\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u652f\u6301\u5212\u5206\u590d\u5408\u8bcd\uff0c\u8fd9\u662f\u4e00\u4e2a\u6709\u7528\u7684\u7279\u6027\u3002\u6ce8\u610f\u8bcd\u7f00\u6587\u4ef6\u5e94\u8be5\u7528<code class=\"literal\">compoundwords controlled</code>\u8bed\u53e5\u6307\u5b9a\u4e00\u4e2a\u7279\u6b8a\u6807\u5fd7\uff0c\u7528\u4e8e\u6807\u8bb0\u8bcd\u5178\u4e2d\u53ef\u4ee5\u53c2\u4e0e\u6784\u6210\u590d\u5408\u8bcd\u7684\u8bcd\uff1a</p>\n<pre class=\"programlisting\">compoundwords  controlled z\n</pre>\n<p lang=\"zh\">\u4e0b\u9762\u662f\u632a\u5a01\u8bed\u7684\u4e00\u4e9b\u793a\u4f8b\uff1a</p>\n<pre class=\"programlisting\">SELECT ts_lexize('norwegian_ispell', 'overbuljongterningpakkmesterassistent');\n   {over,buljong,terning,pakk,mester,assistent}\nSELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk');\n   {sjokoladefabrikk,sjokolade,fabrikk}\n</pre>\n<p lang=\"zh\"><span class=\"application\">MySpell</span>\u683c\u5f0f\u662f<span class=\"application\">Hunspell</span>\u683c\u5f0f\u7684\u4e00\u4e2a\u5b50\u96c6\u3002<span class=\"application\">Hunspell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">PFX A Y 1\nPFX A   0     re         .\nSFX T N 4\nSFX T   0     st         e\nSFX T   y     iest       [^aeiou]y\nSFX T   0     est        [aeiou]y\nSFX T   0     est        [^ey]\n</pre>\n<p lang=\"zh\">\u4e00\u4e2a\u8bcd\u7f00\u7c7b\u7684\u7b2c\u4e00\u884c\u662f\u9996\u90e8\u3002\u9996\u90e8\u540e\u9762\u5217\u51fa\u4e86\u8bcd\u7f00\u89c4\u5219\u7684\u5b57\u6bb5\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u53c2\u6570\u540d\uff08PFX \u6216\u8005 SFX\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u6807\u5fd7\uff08\u8bcd\u7f00\u7c7b\u7684\u540d\u79f0\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4ece\u8be5\u8bcd\u7684\u5f00\u59cb\uff08\u524d\u7f00\uff09\u6216\u8005\u7ed3\u5c3e\uff08\u540e\u7f00\uff09\u5265\u79bb\u5b57\u7b26</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u589e\u52a0\u8bcd\u7f00</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u683c\u5f0f\u7c7b\u4f3c\u7684\u6761\u4ef6\u3002</p>\n</li>\n</ul>\n</div>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u770b\u8d77\u6765\u548c<span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.dict</code>\u6587\u4ef6\u76f8\u4f3c\uff1a</p>\n<pre class=\"programlisting\">larder/M\nlardy/RT\nlarge/RSPMYT\nlargehearted\n</pre>\n<div class=\"note\">\n<h3 class=\"title\" lang=\"zh\">\u6ce8\u610f</h3>\n<p lang=\"zh\"><span class=\"application\">MySpell</span> \u4e0d\u652f\u6301\u590d\u5408\u8bcd\u3002<span class=\"application\">Hunspell</span>\u5219\u5bf9\u590d\u5408\u8bcd\u6709\u66f4\u597d\u7684\u652f\u6301\u3002\u5f53\u524d\uff0c<span class=\"productname\">PostgreSQL</span>\u53ea\u5b9e\u73b0\u4e86 Hunspell \u4e2d\u57fa\u672c\u7684\u590d\u5408\u8bcd\u64cd\u4f5c\u3002</p>\n</div>\n</div>", "manual_path": "/docs/14/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "localization": {"status": "complete", "sources": [{"url": "/docs/14/textsearch-dictionaries.html", "method": "same-major semantic node", "sha256": "c84d880a14dfc2f06213b03bb92f6231a135dda3dbb8ff8293fe8ec73b884851", "language": "zh", "matched_nodes": ["#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[4]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/h3[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[11]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[13]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[15]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[16]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[18]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[20]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[22]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[24]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[5]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[6]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[7]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[9]", "#TEXTSEARCH-DICTIONARIES/div[1]/dl[0]/dt[4]"]}], "language": "zh", "original_text": {"/versions/14/description/0": "ispell dictionary", "/versions/14/facts/0/label": "Tmplname", "/versions/14/facts/1/label": "Tmplinit", "/versions/14/facts/2/label": "Tmpllexize"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "d428394fdb8899fb9e366551d8cd62c3d83a46ed2cec01010061803595873d7e"}, "comparison_data": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "comparison_hash": "8b7d546e289f525321c9b7a6612c5fe0397f3f32c93ab170f863a07763c524b0", "manual_language": "zh"}, "15": {"facts": [{"label": "\u6a21\u677f\u540d\u79f0\uff08tmplname\uff09", "value": "ispell"}, {"label": "\u521d\u59cb\u5316\u51fd\u6570\uff08tmplinit\uff09", "value": "dispell_init"}, {"label": "\u8bcd\u6cd5\u5316\u51fd\u6570\uff08tmpllexize\uff09", "value": "dispell_lexize"}], "tables": [], "aliases": [], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "label": "15.19", "major": "15", "channel": "stable", "revision": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89", "source_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89", "catalog_fingerprint": "fefe3c425147a86defada190c9b0663cfe02caa1724f5dede93e46457572252d"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, {"url": "https://pg.center/docs/15/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "path": "textsearch-dictionaries.html", "label": "PostgreSQL 15 English manual", "sha256": "2c07a3e6c2c585346fb28f44631ec3ddcd6a53d5c16c4bf7946ff8b51534929a", "language": "en", "original_url": "/docs/15/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY"}], "sections": [], "signature": "", "attributes": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "description": ["ispell \u8bcd\u5178"], "manual_html": "<div class=\"sect2\" id=\"TEXTSEARCH-ISPELL-DICTIONARY\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/15/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY\">12.6.5. <span class=\"application\">Ispell</span> \u8bcd\u5178</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u8bcd\u5178\u6a21\u677f\u652f\u6301<em class=\"firstterm\">\u5f62\u6001\u8bcd\u5178</em>\uff0c\u5b83\u53ef\u4ee5\u628a\u4e00\u4e2a\u8bcd\u7684\u8bb8\u591a\u4e0d\u540c\u8bed\u8a00\u5b66\u5f62\u5f0f\u6b63\u89c4\u5316\u4e3a\u540c\u4e00\u4e2a\u8bcd\u4f4d\u3002\u4f8b\u5982\uff0c\u4e00\u4e2a\u82f1\u8bed <span class=\"application\">Ispell</span> \u8bcd\u5178\u53ef\u4ee5\u5339\u914d\u641c\u7d22\u8bcd <code class=\"literal\">bank</code> \u7684\u6240\u6709\u53d8\u683c\u548c\u53d8\u4f4d\u5f62\u5f0f\uff0c\u4f8b\u5982 <code class=\"literal\">banking</code>\u3001<code class=\"literal\">banked</code>\u3001<code class=\"literal\">banks</code>\u3001<code class=\"literal\">banks'</code> \u548c <code class=\"literal\">bank's</code>\u3002</p>\n<p lang=\"zh\">\u6807\u51c6<span class=\"productname\">PostgreSQL</span>\u53d1\u884c\u7248\u4e0d\u5305\u542b\u4efb\u4f55<span class=\"application\">Ispell</span>\u914d\u7f6e\u6587\u4ef6\u3002\u5927\u91cf\u8bed\u8a00\u7684\u8bcd\u5178\u53ef\u4ece<a class=\"ulink\" href=\"https://www.cs.hmc.edu/~geoff/ispell.html\" target=\"_top\">Ispell</a>\u83b7\u53d6\u3002\u6b64\u5916\uff0c\u8fd8\u652f\u6301\u4e00\u4e9b\u66f4\u73b0\u4ee3\u7684\u8bcd\u5178\u6587\u4ef6\u683c\u5f0f \u2014 <a class=\"ulink\" href=\"https://en.wikipedia.org/wiki/MySpell\" target=\"_top\">MySpell</a> (OO &lt; 2.0.1) \u548c<a class=\"ulink\" href=\"https://hunspell.github.io/\" target=\"_top\">Hunspell</a>(OO &gt;= 2.0.2)\u3002\u5728<a class=\"ulink\" href=\"https://wiki.openoffice.org/wiki/Dictionaries\" target=\"_top\">OpenOffice Wiki</a>\u4e0a\u6709\u5927\u91cf\u8bcd\u5178\u53ef\u7528\u3002</p>\n<p lang=\"zh\">\u8981\u521b\u5efa\u4e00\u4e2a<span class=\"application\">Ispell</span>\u8bcd\u5178\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4e0b\u8f7d\u8bcd\u5178\u914d\u7f6e\u6587\u4ef6\u3002<span class=\"productname\">OpenOffice</span>\u6269\u5c55\u6587\u4ef6\u7684\u6269\u5c55\u540d\u662f<code class=\"filename\">.oxt</code>\u3002\u9700\u8981\u63d0\u53d6<code class=\"filename\">.aff</code>\u548c<code class=\"filename\">.dic</code>\u6587\u4ef6\uff0c\u5c06\u6269\u5c55\u540d\u6539\u4e3a<code class=\"filename\">.affix</code>\u548c<code class=\"filename\">.dict</code>\u3002\u5bf9\u4e8e\u67d0\u4e9b\u8bcd\u5178\u6587\u4ef6\uff0c\u8fd8\u9700\u8981\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u5b57\u7b26\u8f6c\u6362\u6210 UTF-8 \u7f16\u7801\uff08\u4f8b\u5982\u632a\u5a01\u8bed\u8bcd\u5178\uff09\uff1a</p>\n<pre class=\"programlisting\">\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.dict nn_NO.dic\n</pre>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u590d\u5236\u6587\u4ef6\u5230<code class=\"filename\">$SHAREDIR/tsearch_data</code>\u76ee\u5f55</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u6587\u4ef6\u8f7d\u5165\u5230 PostgreSQL\uff1a</p>\n<pre class=\"programlisting\">\nCREATE TEXT SEARCH DICTIONARY english_hunspell (\n    TEMPLATE = ispell,\n    DictFile = en_us,\n    AffFile = en_us,\n    Stopwords = english);\n</pre>\n</li>\n</ul>\n</div>\n<p lang=\"zh\">\u8fd9\u91cc\uff0c<code class=\"literal\">DictFile</code>\u3001<code class=\"literal\">AffFile</code>\u548c<code class=\"literal\">StopWords</code>\u6307\u5b9a\u8bcd\u5178\u3001\u8bcd\u7f00\u548c\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u57fa\u540d\u3002\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u683c\u5f0f\u548c\u524d\u9762\u89e3\u91ca\u7684<code class=\"literal\">simple</code>\u8bcd\u5178\u7c7b\u578b\u76f8\u540c\u3002\u5176\u4ed6\u6587\u4ef6\u7684\u683c\u5f0f\u5728\u8fd9\u91cc\u6ca1\u6709\u6307\u5b9a\uff0c\u4f46\u662f\u4e5f\u53ef\u4ee5\u4ece\u4e0a\u9762\u63d0\u5230\u7684\u7f51\u7ad9\u83b7\u5f97\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u901a\u5e38\u53ea\u80fd\u8bc6\u522b\u6709\u9650\u7684\u8bcd\uff0c\u56e0\u6b64\u5176\u540e\u5e94\u8ddf\u7740\u53e6\u4e00\u4e2a\u8986\u76d6\u8303\u56f4\u66f4\u5e7f\u7684\u8bcd\u5178\uff1b\u4f8b\u5982\uff0c\u4e00\u4e2a Snowball \u8bcd\u5178\uff0c\u5b83\u53ef\u4ee5\u8bc6\u522b\u6240\u6709\u8f93\u5165\u3002</p>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">prefixes\nflag *A:\n    .           &gt;   RE      # As in enter &gt; reenter\nsuffixes\nflag T:\n    E           &gt;   ST      # As in late &gt; latest\n    [^AEIOU]Y   &gt;   -Y,IEST # As in dirty &gt; dirtiest\n    [AEIOU]Y    &gt;   EST     # As in gray &gt; grayest\n    [^EY]       &gt;   EST     # As in small &gt; smallest\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">lapse/ADGRS\nlard/DGRS\nlarge/PRTY\nlark/MRS\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u7684\u683c\u5f0f\u662f\uff1a</p>\n<pre class=\"programlisting\">basic_form/affix_class_name\n</pre>\n<p lang=\"zh\">\u5728<code class=\"filename\">.affix</code>\u6587\u4ef6\u4e2d\uff0c\u6bcf\u4e00\u4e2a\u8bcd\u7f00\u6807\u5fd7\u4ee5\u4e0b\u9762\u7684\u683c\u5f0f\u63cf\u8ff0\uff1a</p>\n<pre class=\"programlisting\">condition &gt; [-stripping_letters,] adding_affix\n</pre>\n<p lang=\"zh\">\u8fd9\u91cc\u7684\u6761\u4ef6\u5177\u6709\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u76f8\u4f3c\u7684\u683c\u5f0f\u3002\u5b83\u53ef\u4ee5\u4f7f\u7528\u5206\u7ec4<code class=\"literal\">[...]</code>\u548c<code class=\"literal\">[^...]</code>\u3002\u4f8b\u5982\uff0c<code class=\"literal\">[AEIOU]Y</code>\u8868\u793a\u8bcd\u7684\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"y\"</code>\u5e76\u4e14\u5012\u6570\u7b2c\u4e8c\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"a\"</code>\u3001<code class=\"literal\">\"e\"</code>\u3001<code class=\"literal\">\"i\"</code>\u3001<code class=\"literal\">\"o\"</code>\u6216\u8005<code class=\"literal\">\"u\"</code>\u3002<code class=\"literal\">[^EY]</code>\u8868\u793a\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u65e2\u4e0d\u662f<code class=\"literal\">\"e\"</code>\u4e5f\u4e0d\u662f<code class=\"literal\">\"y\"</code>\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u652f\u6301\u5212\u5206\u590d\u5408\u8bcd\uff0c\u8fd9\u662f\u4e00\u4e2a\u6709\u7528\u7684\u7279\u6027\u3002\u6ce8\u610f\u8bcd\u7f00\u6587\u4ef6\u5e94\u8be5\u7528<code class=\"literal\">compoundwords controlled</code>\u8bed\u53e5\u6307\u5b9a\u4e00\u4e2a\u7279\u6b8a\u6807\u5fd7\uff0c\u7528\u4e8e\u6807\u8bb0\u8bcd\u5178\u4e2d\u53ef\u4ee5\u53c2\u4e0e\u6784\u6210\u590d\u5408\u8bcd\u7684\u8bcd\uff1a</p>\n<pre class=\"programlisting\">compoundwords  controlled z\n</pre>\n<p lang=\"zh\">\u4e0b\u9762\u662f\u632a\u5a01\u8bed\u7684\u4e00\u4e9b\u793a\u4f8b\uff1a</p>\n<pre class=\"programlisting\">SELECT ts_lexize('norwegian_ispell', 'overbuljongterningpakkmesterassistent');\n   {over,buljong,terning,pakk,mester,assistent}\nSELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk');\n   {sjokoladefabrikk,sjokolade,fabrikk}\n</pre>\n<p lang=\"zh\"><span class=\"application\">MySpell</span>\u683c\u5f0f\u662f<span class=\"application\">Hunspell</span>\u683c\u5f0f\u7684\u4e00\u4e2a\u5b50\u96c6\u3002<span class=\"application\">Hunspell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">PFX A Y 1\nPFX A   0     re         .\nSFX T N 4\nSFX T   0     st         e\nSFX T   y     iest       [^aeiou]y\nSFX T   0     est        [aeiou]y\nSFX T   0     est        [^ey]\n</pre>\n<p lang=\"zh\">\u4e00\u4e2a\u8bcd\u7f00\u7c7b\u7684\u7b2c\u4e00\u884c\u662f\u9996\u90e8\u3002\u9996\u90e8\u540e\u9762\u5217\u51fa\u4e86\u8bcd\u7f00\u89c4\u5219\u7684\u5b57\u6bb5\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u53c2\u6570\u540d\uff08PFX \u6216\u8005 SFX\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u6807\u5fd7\uff08\u8bcd\u7f00\u7c7b\u7684\u540d\u79f0\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4ece\u8be5\u8bcd\u7684\u5f00\u59cb\uff08\u524d\u7f00\uff09\u6216\u8005\u7ed3\u5c3e\uff08\u540e\u7f00\uff09\u5265\u79bb\u5b57\u7b26</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u589e\u52a0\u8bcd\u7f00</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u683c\u5f0f\u7c7b\u4f3c\u7684\u6761\u4ef6\u3002</p>\n</li>\n</ul>\n</div>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u770b\u8d77\u6765\u548c<span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.dict</code>\u6587\u4ef6\u76f8\u4f3c\uff1a</p>\n<pre class=\"programlisting\">larder/M\nlardy/RT\nlarge/RSPMYT\nlargehearted\n</pre>\n<div class=\"note\">\n<h3 class=\"title\" lang=\"zh\">\u6ce8\u610f</h3>\n<p lang=\"zh\"><span class=\"application\">MySpell</span> \u4e0d\u652f\u6301\u590d\u5408\u8bcd\u3002<span class=\"application\">Hunspell</span>\u5219\u5bf9\u590d\u5408\u8bcd\u6709\u66f4\u597d\u7684\u652f\u6301\u3002\u5f53\u524d\uff0c<span class=\"productname\">PostgreSQL</span>\u53ea\u5b9e\u73b0\u4e86 Hunspell \u4e2d\u57fa\u672c\u7684\u590d\u5408\u8bcd\u64cd\u4f5c\u3002</p>\n</div>\n</div>", "manual_path": "/docs/15/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "localization": {"status": "complete", "sources": [{"url": "/docs/15/textsearch-dictionaries.html", "method": "same-major semantic node", "sha256": "8ea2b1afa7f5da82bd0045f7479243d49615c62e9fa9b70f6068353416581409", "language": "zh", "matched_nodes": ["#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[4]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/h3[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[11]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[13]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[15]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[16]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[18]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[20]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[22]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[24]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[5]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[6]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[7]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[9]", "#TEXTSEARCH-DICTIONARIES/div[1]/dl[0]/dt[4]"]}], "language": "zh", "original_text": {"/versions/15/description/0": "ispell dictionary", "/versions/15/facts/0/label": "Tmplname", "/versions/15/facts/1/label": "Tmplinit", "/versions/15/facts/2/label": "Tmpllexize"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "1ca47b6e61a84adb59eed6f347977cb28d8edf56d0ad9fc5a78ac686e985532b"}, "comparison_data": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "comparison_hash": "8b7d546e289f525321c9b7a6612c5fe0397f3f32c93ab170f863a07763c524b0", "manual_language": "zh"}, "16": {"facts": [{"label": "\u6a21\u677f\u540d\u79f0\uff08tmplname\uff09", "value": "ispell"}, {"label": "\u521d\u59cb\u5316\u51fd\u6570\uff08tmplinit\uff09", "value": "dispell_init"}, {"label": "\u8bcd\u6cd5\u5316\u51fd\u6570\uff08tmpllexize\uff09", "value": "dispell_lexize"}], "tables": [], "aliases": [], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "label": "16.15", "major": "16", "channel": "stable", "revision": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed", "source_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed", "catalog_fingerprint": "fa133458dc8f52e15083b4f59b7a582e2e378b608d3ac5c53054df458a374e23"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, {"url": "https://pg.center/docs/16/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "path": "textsearch-dictionaries.html", "label": "PostgreSQL 16 English manual", "sha256": "3a688880061676fa9389d35ac677baa2030b0a624a0c3a62c8d3f4cb2b9170d1", "language": "en", "original_url": "/docs/16/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY"}], "sections": [], "signature": "", "attributes": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "description": ["ispell \u8bcd\u5178"], "manual_html": "<div class=\"sect2\" id=\"TEXTSEARCH-ISPELL-DICTIONARY\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/16/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY\">12.6.5. <span class=\"application\">Ispell</span> \u8bcd\u5178</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u8bcd\u5178\u6a21\u677f\u652f\u6301<em class=\"firstterm\">\u5f62\u6001\u8bcd\u5178</em>\uff0c\u5b83\u53ef\u4ee5\u628a\u4e00\u4e2a\u8bcd\u7684\u8bb8\u591a\u4e0d\u540c\u8bed\u8a00\u5b66\u5f62\u5f0f\u6b63\u89c4\u5316\u4e3a\u540c\u4e00\u4e2a\u8bcd\u4f4d\u3002\u4f8b\u5982\uff0c\u4e00\u4e2a\u82f1\u8bed <span class=\"application\">Ispell</span> \u8bcd\u5178\u53ef\u4ee5\u5339\u914d\u641c\u7d22\u8bcd <code class=\"literal\">bank</code> \u7684\u6240\u6709\u53d8\u683c\u548c\u53d8\u4f4d\u5f62\u5f0f\uff0c\u4f8b\u5982 <code class=\"literal\">banking</code>\u3001<code class=\"literal\">banked</code>\u3001<code class=\"literal\">banks</code>\u3001<code class=\"literal\">banks'</code> \u548c <code class=\"literal\">bank's</code>\u3002</p>\n<p lang=\"zh\">\u6807\u51c6<span class=\"productname\">PostgreSQL</span>\u53d1\u884c\u7248\u4e0d\u5305\u542b\u4efb\u4f55<span class=\"application\">Ispell</span>\u914d\u7f6e\u6587\u4ef6\u3002\u5927\u91cf\u8bed\u8a00\u7684\u8bcd\u5178\u53ef\u4ece<a class=\"ulink\" href=\"https://www.cs.hmc.edu/~geoff/ispell.html\" target=\"_top\">Ispell</a>\u83b7\u53d6\u3002\u6b64\u5916\uff0c\u8fd8\u652f\u6301\u4e00\u4e9b\u66f4\u73b0\u4ee3\u7684\u8bcd\u5178\u6587\u4ef6\u683c\u5f0f \u2014 <a class=\"ulink\" href=\"https://en.wikipedia.org/wiki/MySpell\" target=\"_top\">MySpell</a> (OO &lt; 2.0.1) \u548c<a class=\"ulink\" href=\"https://hunspell.github.io/\" target=\"_top\">Hunspell</a>(OO &gt;= 2.0.2)\u3002\u5728<a class=\"ulink\" href=\"https://wiki.openoffice.org/wiki/Dictionaries\" target=\"_top\">OpenOffice Wiki</a>\u4e0a\u6709\u5927\u91cf\u8bcd\u5178\u53ef\u7528\u3002</p>\n<p lang=\"zh\">\u8981\u521b\u5efa\u4e00\u4e2a<span class=\"application\">Ispell</span>\u8bcd\u5178\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4e0b\u8f7d\u8bcd\u5178\u914d\u7f6e\u6587\u4ef6\u3002<span class=\"productname\">OpenOffice</span>\u6269\u5c55\u6587\u4ef6\u7684\u6269\u5c55\u540d\u662f<code class=\"filename\">.oxt</code>\u3002\u9700\u8981\u63d0\u53d6<code class=\"filename\">.aff</code>\u548c<code class=\"filename\">.dic</code>\u6587\u4ef6\uff0c\u5c06\u6269\u5c55\u540d\u6539\u4e3a<code class=\"filename\">.affix</code>\u548c<code class=\"filename\">.dict</code>\u3002\u5bf9\u4e8e\u67d0\u4e9b\u8bcd\u5178\u6587\u4ef6\uff0c\u8fd8\u9700\u8981\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u5b57\u7b26\u8f6c\u6362\u6210 UTF-8 \u7f16\u7801\uff08\u4f8b\u5982\u632a\u5a01\u8bed\u8bcd\u5178\uff09\uff1a</p>\n<pre class=\"programlisting\">\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.dict nn_NO.dic\n</pre>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u590d\u5236\u6587\u4ef6\u5230<code class=\"filename\">$SHAREDIR/tsearch_data</code>\u76ee\u5f55</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u6587\u4ef6\u8f7d\u5165\u5230 PostgreSQL\uff1a</p>\n<pre class=\"programlisting\">\nCREATE TEXT SEARCH DICTIONARY english_hunspell (\n    TEMPLATE = ispell,\n    DictFile = en_us,\n    AffFile = en_us,\n    Stopwords = english);\n</pre>\n</li>\n</ul>\n</div>\n<p lang=\"zh\">\u8fd9\u91cc\uff0c<code class=\"literal\">DictFile</code>\u3001<code class=\"literal\">AffFile</code>\u548c<code class=\"literal\">StopWords</code>\u6307\u5b9a\u8bcd\u5178\u3001\u8bcd\u7f00\u548c\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u57fa\u540d\u3002\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u683c\u5f0f\u548c\u524d\u9762\u89e3\u91ca\u7684<code class=\"literal\">simple</code>\u8bcd\u5178\u7c7b\u578b\u76f8\u540c\u3002\u5176\u4ed6\u6587\u4ef6\u7684\u683c\u5f0f\u5728\u8fd9\u91cc\u6ca1\u6709\u6307\u5b9a\uff0c\u4f46\u662f\u4e5f\u53ef\u4ee5\u4ece\u4e0a\u9762\u63d0\u5230\u7684\u7f51\u7ad9\u83b7\u5f97\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u901a\u5e38\u53ea\u80fd\u8bc6\u522b\u6709\u9650\u7684\u8bcd\uff0c\u56e0\u6b64\u5176\u540e\u5e94\u8ddf\u7740\u53e6\u4e00\u4e2a\u8986\u76d6\u8303\u56f4\u66f4\u5e7f\u7684\u8bcd\u5178\uff1b\u4f8b\u5982\uff0c\u4e00\u4e2a Snowball \u8bcd\u5178\uff0c\u5b83\u53ef\u4ee5\u8bc6\u522b\u6240\u6709\u8f93\u5165\u3002</p>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">prefixes\nflag *A:\n    .           &gt;   RE      # As in enter &gt; reenter\nsuffixes\nflag T:\n    E           &gt;   ST      # As in late &gt; latest\n    [^AEIOU]Y   &gt;   -Y,IEST # As in dirty &gt; dirtiest\n    [AEIOU]Y    &gt;   EST     # As in gray &gt; grayest\n    [^EY]       &gt;   EST     # As in small &gt; smallest\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">lapse/ADGRS\nlard/DGRS\nlarge/PRTY\nlark/MRS\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u7684\u683c\u5f0f\u662f\uff1a</p>\n<pre class=\"programlisting\">basic_form/affix_class_name\n</pre>\n<p lang=\"zh\">\u5728<code class=\"filename\">.affix</code>\u6587\u4ef6\u4e2d\uff0c\u6bcf\u4e00\u4e2a\u8bcd\u7f00\u6807\u5fd7\u4ee5\u4e0b\u9762\u7684\u683c\u5f0f\u63cf\u8ff0\uff1a</p>\n<pre class=\"programlisting\">condition &gt; [-stripping_letters,] adding_affix\n</pre>\n<p lang=\"zh\">\u8fd9\u91cc\u7684\u6761\u4ef6\u5177\u6709\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u76f8\u4f3c\u7684\u683c\u5f0f\u3002\u5b83\u53ef\u4ee5\u4f7f\u7528\u5206\u7ec4<code class=\"literal\">[...]</code>\u548c<code class=\"literal\">[^...]</code>\u3002\u4f8b\u5982\uff0c<code class=\"literal\">[AEIOU]Y</code>\u8868\u793a\u8bcd\u7684\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"y\"</code>\u5e76\u4e14\u5012\u6570\u7b2c\u4e8c\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"a\"</code>\u3001<code class=\"literal\">\"e\"</code>\u3001<code class=\"literal\">\"i\"</code>\u3001<code class=\"literal\">\"o\"</code>\u6216\u8005<code class=\"literal\">\"u\"</code>\u3002<code class=\"literal\">[^EY]</code>\u8868\u793a\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u65e2\u4e0d\u662f<code class=\"literal\">\"e\"</code>\u4e5f\u4e0d\u662f<code class=\"literal\">\"y\"</code>\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u652f\u6301\u5212\u5206\u590d\u5408\u8bcd\uff0c\u8fd9\u662f\u4e00\u4e2a\u6709\u7528\u7684\u7279\u6027\u3002\u6ce8\u610f\u8bcd\u7f00\u6587\u4ef6\u5e94\u8be5\u7528<code class=\"literal\">compoundwords controlled</code>\u8bed\u53e5\u6307\u5b9a\u4e00\u4e2a\u7279\u6b8a\u6807\u5fd7\uff0c\u7528\u4e8e\u6807\u8bb0\u8bcd\u5178\u4e2d\u53ef\u4ee5\u53c2\u4e0e\u6784\u6210\u590d\u5408\u8bcd\u7684\u8bcd\uff1a</p>\n<pre class=\"programlisting\">compoundwords  controlled z\n</pre>\n<p lang=\"zh\">\u4e0b\u9762\u662f\u632a\u5a01\u8bed\u7684\u4e00\u4e9b\u793a\u4f8b\uff1a</p>\n<pre class=\"programlisting\">SELECT ts_lexize('norwegian_ispell', 'overbuljongterningpakkmesterassistent');\n   {over,buljong,terning,pakk,mester,assistent}\nSELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk');\n   {sjokoladefabrikk,sjokolade,fabrikk}\n</pre>\n<p lang=\"zh\"><span class=\"application\">MySpell</span>\u683c\u5f0f\u662f<span class=\"application\">Hunspell</span>\u683c\u5f0f\u7684\u4e00\u4e2a\u5b50\u96c6\u3002<span class=\"application\">Hunspell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">PFX A Y 1\nPFX A   0     re         .\nSFX T N 4\nSFX T   0     st         e\nSFX T   y     iest       [^aeiou]y\nSFX T   0     est        [aeiou]y\nSFX T   0     est        [^ey]\n</pre>\n<p lang=\"zh\">\u4e00\u4e2a\u8bcd\u7f00\u7c7b\u7684\u7b2c\u4e00\u884c\u662f\u9996\u90e8\u3002\u9996\u90e8\u540e\u9762\u5217\u51fa\u4e86\u8bcd\u7f00\u89c4\u5219\u7684\u5b57\u6bb5\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u53c2\u6570\u540d\uff08PFX \u6216\u8005 SFX\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u6807\u5fd7\uff08\u8bcd\u7f00\u7c7b\u7684\u540d\u79f0\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4ece\u8be5\u8bcd\u7684\u5f00\u59cb\uff08\u524d\u7f00\uff09\u6216\u8005\u7ed3\u5c3e\uff08\u540e\u7f00\uff09\u5265\u79bb\u5b57\u7b26</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u589e\u52a0\u8bcd\u7f00</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u683c\u5f0f\u7c7b\u4f3c\u7684\u6761\u4ef6\u3002</p>\n</li>\n</ul>\n</div>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u770b\u8d77\u6765\u548c<span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.dict</code>\u6587\u4ef6\u76f8\u4f3c\uff1a</p>\n<pre class=\"programlisting\">larder/M\nlardy/RT\nlarge/RSPMYT\nlargehearted\n</pre>\n<div class=\"note\">\n<h3 class=\"title\" lang=\"zh\">\u6ce8\u610f</h3>\n<p lang=\"zh\"><span class=\"application\">MySpell</span> \u4e0d\u652f\u6301\u590d\u5408\u8bcd\u3002<span class=\"application\">Hunspell</span>\u5219\u5bf9\u590d\u5408\u8bcd\u6709\u66f4\u597d\u7684\u652f\u6301\u3002\u5f53\u524d\uff0c<span class=\"productname\">PostgreSQL</span>\u53ea\u5b9e\u73b0\u4e86 Hunspell \u4e2d\u57fa\u672c\u7684\u590d\u5408\u8bcd\u64cd\u4f5c\u3002</p>\n</div>\n</div>", "manual_path": "/docs/16/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "localization": {"status": "complete", "sources": [{"url": "/docs/16/textsearch-dictionaries.html", "method": "same-major semantic node", "sha256": "430a0ff98acc6b0bec92c2b77ff50493ea5328b5eccce1bc0f4991a53ac16ddf", "language": "zh", "matched_nodes": ["#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[4]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/h3[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[11]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[13]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[15]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[16]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[18]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[20]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[22]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[24]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[5]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[6]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[7]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[9]", "#TEXTSEARCH-DICTIONARIES/div[1]/dl[0]/dt[4]"]}], "language": "zh", "original_text": {"/versions/16/description/0": "ispell dictionary", "/versions/16/facts/0/label": "Tmplname", "/versions/16/facts/1/label": "Tmplinit", "/versions/16/facts/2/label": "Tmpllexize"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "8d79bf08d43ebfbceaf5ef8a8aee68599d0d8c31823e0e5d26ca0e67946123fb"}, "comparison_data": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "comparison_hash": "8b7d546e289f525321c9b7a6612c5fe0397f3f32c93ab170f863a07763c524b0", "manual_language": "zh"}, "17": {"facts": [{"label": "\u6a21\u677f\u540d\u79f0\uff08tmplname\uff09", "value": "ispell"}, {"label": "\u521d\u59cb\u5316\u51fd\u6570\uff08tmplinit\uff09", "value": "dispell_init"}, {"label": "\u8bcd\u6cd5\u5316\u51fd\u6570\uff08tmpllexize\uff09", "value": "dispell_lexize"}], "tables": [], "aliases": [], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "label": "17.11", "major": "17", "channel": "stable", "revision": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979", "source_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979", "catalog_fingerprint": "4bbe3ac77becd618478f66aec420a533e9017be356c5c1d51a4b17f0fd497c07"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, {"url": "https://pg.center/docs/17/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "path": "textsearch-dictionaries.html", "label": "PostgreSQL 17 English manual", "sha256": "989f1a5af7ab9dfa2a07c1a2aefcdc2eddc889a3438d45eb94f1b2933b953fa6", "language": "en", "original_url": "/docs/17/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY"}], "sections": [], "signature": "", "attributes": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "description": ["ispell \u8bcd\u5178"], "manual_html": "<div class=\"sect2\" id=\"TEXTSEARCH-ISPELL-DICTIONARY\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/17/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY\">12.6.5. <span class=\"application\">Ispell</span> \u8bcd\u5178</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u8bcd\u5178\u6a21\u677f\u652f\u6301<em class=\"firstterm\">\u5f62\u6001\u8bcd\u5178</em>\uff0c\u5b83\u53ef\u4ee5\u628a\u4e00\u4e2a\u8bcd\u7684\u8bb8\u591a\u4e0d\u540c\u8bed\u8a00\u5b66\u5f62\u5f0f\u6b63\u89c4\u5316\u4e3a\u540c\u4e00\u4e2a\u8bcd\u4f4d\u3002\u4f8b\u5982\uff0c\u4e00\u4e2a\u82f1\u8bed <span class=\"application\">Ispell</span> \u8bcd\u5178\u53ef\u4ee5\u5339\u914d\u641c\u7d22\u8bcd <code class=\"literal\">bank</code> \u7684\u6240\u6709\u53d8\u683c\u548c\u53d8\u4f4d\u5f62\u5f0f\uff0c\u4f8b\u5982 <code class=\"literal\">banking</code>\u3001<code class=\"literal\">banked</code>\u3001<code class=\"literal\">banks</code>\u3001<code class=\"literal\">banks'</code> \u548c <code class=\"literal\">bank's</code>\u3002</p>\n<p lang=\"zh\">\u6807\u51c6<span class=\"productname\">PostgreSQL</span>\u53d1\u884c\u7248\u4e0d\u5305\u542b\u4efb\u4f55<span class=\"application\">Ispell</span>\u914d\u7f6e\u6587\u4ef6\u3002\u5927\u91cf\u8bed\u8a00\u7684\u8bcd\u5178\u53ef\u4ece<a class=\"ulink\" href=\"https://www.cs.hmc.edu/~geoff/ispell.html\" target=\"_top\">Ispell</a>\u83b7\u53d6\u3002\u6b64\u5916\uff0c\u8fd8\u652f\u6301\u4e00\u4e9b\u66f4\u73b0\u4ee3\u7684\u8bcd\u5178\u6587\u4ef6\u683c\u5f0f \u2014 <a class=\"ulink\" href=\"https://en.wikipedia.org/wiki/MySpell\" target=\"_top\">MySpell</a> (OO &lt; 2.0.1) \u548c<a class=\"ulink\" href=\"https://hunspell.github.io/\" target=\"_top\">Hunspell</a>(OO &gt;= 2.0.2)\u3002\u5728<a class=\"ulink\" href=\"https://wiki.openoffice.org/wiki/Dictionaries\" target=\"_top\">OpenOffice Wiki</a>\u4e0a\u6709\u5927\u91cf\u8bcd\u5178\u53ef\u7528\u3002</p>\n<p lang=\"zh\">\u8981\u521b\u5efa\u4e00\u4e2a<span class=\"application\">Ispell</span>\u8bcd\u5178\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4e0b\u8f7d\u8bcd\u5178\u914d\u7f6e\u6587\u4ef6\u3002<span class=\"productname\">OpenOffice</span>\u6269\u5c55\u6587\u4ef6\u7684\u6269\u5c55\u540d\u662f<code class=\"filename\">.oxt</code>\u3002\u9700\u8981\u63d0\u53d6<code class=\"filename\">.aff</code>\u548c<code class=\"filename\">.dic</code>\u6587\u4ef6\uff0c\u5c06\u6269\u5c55\u540d\u6539\u4e3a<code class=\"filename\">.affix</code>\u548c<code class=\"filename\">.dict</code>\u3002\u5bf9\u4e8e\u67d0\u4e9b\u8bcd\u5178\u6587\u4ef6\uff0c\u8fd8\u9700\u8981\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u5b57\u7b26\u8f6c\u6362\u6210 UTF-8 \u7f16\u7801\uff08\u4f8b\u5982\u632a\u5a01\u8bed\u8bcd\u5178\uff09\uff1a</p>\n<pre class=\"programlisting\">\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.dict nn_NO.dic\n</pre>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u590d\u5236\u6587\u4ef6\u5230<code class=\"filename\">$SHAREDIR/tsearch_data</code>\u76ee\u5f55</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u6587\u4ef6\u8f7d\u5165\u5230 PostgreSQL\uff1a</p>\n<pre class=\"programlisting\">\nCREATE TEXT SEARCH DICTIONARY english_hunspell (\n    TEMPLATE = ispell,\n    DictFile = en_us,\n    AffFile = en_us,\n    Stopwords = english);\n</pre>\n</li>\n</ul>\n</div>\n<p lang=\"zh\">\u8fd9\u91cc\uff0c<code class=\"literal\">DictFile</code>\u3001<code class=\"literal\">AffFile</code>\u548c<code class=\"literal\">StopWords</code>\u6307\u5b9a\u8bcd\u5178\u3001\u8bcd\u7f00\u548c\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u57fa\u540d\u3002\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u683c\u5f0f\u548c\u524d\u9762\u89e3\u91ca\u7684<code class=\"literal\">simple</code>\u8bcd\u5178\u7c7b\u578b\u76f8\u540c\u3002\u5176\u4ed6\u6587\u4ef6\u7684\u683c\u5f0f\u5728\u8fd9\u91cc\u6ca1\u6709\u6307\u5b9a\uff0c\u4f46\u662f\u4e5f\u53ef\u4ee5\u4ece\u4e0a\u9762\u63d0\u5230\u7684\u7f51\u7ad9\u83b7\u5f97\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u901a\u5e38\u53ea\u80fd\u8bc6\u522b\u6709\u9650\u7684\u8bcd\uff0c\u56e0\u6b64\u5176\u540e\u5e94\u8ddf\u7740\u53e6\u4e00\u4e2a\u8986\u76d6\u8303\u56f4\u66f4\u5e7f\u7684\u8bcd\u5178\uff1b\u4f8b\u5982\uff0c\u4e00\u4e2a Snowball \u8bcd\u5178\uff0c\u5b83\u53ef\u4ee5\u8bc6\u522b\u6240\u6709\u8f93\u5165\u3002</p>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">prefixes\nflag *A:\n    .           &gt;   RE      # As in enter &gt; reenter\nsuffixes\nflag T:\n    E           &gt;   ST      # As in late &gt; latest\n    [^AEIOU]Y   &gt;   -Y,IEST # As in dirty &gt; dirtiest\n    [AEIOU]Y    &gt;   EST     # As in gray &gt; grayest\n    [^EY]       &gt;   EST     # As in small &gt; smallest\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">lapse/ADGRS\nlard/DGRS\nlarge/PRTY\nlark/MRS\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u7684\u683c\u5f0f\u662f\uff1a</p>\n<pre class=\"programlisting\">basic_form/affix_class_name\n</pre>\n<p lang=\"zh\">\u5728<code class=\"filename\">.affix</code>\u6587\u4ef6\u4e2d\uff0c\u6bcf\u4e00\u4e2a\u8bcd\u7f00\u6807\u5fd7\u4ee5\u4e0b\u9762\u7684\u683c\u5f0f\u63cf\u8ff0\uff1a</p>\n<pre class=\"programlisting\">condition &gt; [-stripping_letters,] adding_affix\n</pre>\n<p lang=\"zh\">\u8fd9\u91cc\u7684\u6761\u4ef6\u5177\u6709\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u76f8\u4f3c\u7684\u683c\u5f0f\u3002\u5b83\u53ef\u4ee5\u4f7f\u7528\u5206\u7ec4<code class=\"literal\">[...]</code>\u548c<code class=\"literal\">[^...]</code>\u3002\u4f8b\u5982\uff0c<code class=\"literal\">[AEIOU]Y</code>\u8868\u793a\u8bcd\u7684\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"y\"</code>\u5e76\u4e14\u5012\u6570\u7b2c\u4e8c\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"a\"</code>\u3001<code class=\"literal\">\"e\"</code>\u3001<code class=\"literal\">\"i\"</code>\u3001<code class=\"literal\">\"o\"</code>\u6216\u8005<code class=\"literal\">\"u\"</code>\u3002<code class=\"literal\">[^EY]</code>\u8868\u793a\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u65e2\u4e0d\u662f<code class=\"literal\">\"e\"</code>\u4e5f\u4e0d\u662f<code class=\"literal\">\"y\"</code>\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u652f\u6301\u5212\u5206\u590d\u5408\u8bcd\uff0c\u8fd9\u662f\u4e00\u4e2a\u6709\u7528\u7684\u7279\u6027\u3002\u6ce8\u610f\u8bcd\u7f00\u6587\u4ef6\u5e94\u8be5\u7528<code class=\"literal\">compoundwords controlled</code>\u8bed\u53e5\u6307\u5b9a\u4e00\u4e2a\u7279\u6b8a\u6807\u5fd7\uff0c\u7528\u4e8e\u6807\u8bb0\u8bcd\u5178\u4e2d\u53ef\u4ee5\u53c2\u4e0e\u6784\u6210\u590d\u5408\u8bcd\u7684\u8bcd\uff1a</p>\n<pre class=\"programlisting\">compoundwords  controlled z\n</pre>\n<p lang=\"zh\">\u4e0b\u9762\u662f\u632a\u5a01\u8bed\u7684\u4e00\u4e9b\u793a\u4f8b\uff1a</p>\n<pre class=\"programlisting\">SELECT ts_lexize('norwegian_ispell', 'overbuljongterningpakkmesterassistent');\n   {over,buljong,terning,pakk,mester,assistent}\nSELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk');\n   {sjokoladefabrikk,sjokolade,fabrikk}\n</pre>\n<p lang=\"zh\"><span class=\"application\">MySpell</span>\u683c\u5f0f\u662f<span class=\"application\">Hunspell</span>\u683c\u5f0f\u7684\u4e00\u4e2a\u5b50\u96c6\u3002<span class=\"application\">Hunspell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">PFX A Y 1\nPFX A   0     re         .\nSFX T N 4\nSFX T   0     st         e\nSFX T   y     iest       [^aeiou]y\nSFX T   0     est        [aeiou]y\nSFX T   0     est        [^ey]\n</pre>\n<p lang=\"zh\">\u4e00\u4e2a\u8bcd\u7f00\u7c7b\u7684\u7b2c\u4e00\u884c\u662f\u9996\u90e8\u3002\u9996\u90e8\u540e\u9762\u5217\u51fa\u4e86\u8bcd\u7f00\u89c4\u5219\u7684\u5b57\u6bb5\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u53c2\u6570\u540d\uff08PFX \u6216\u8005 SFX\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u6807\u5fd7\uff08\u8bcd\u7f00\u7c7b\u7684\u540d\u79f0\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4ece\u8be5\u8bcd\u7684\u5f00\u59cb\uff08\u524d\u7f00\uff09\u6216\u8005\u7ed3\u5c3e\uff08\u540e\u7f00\uff09\u5265\u79bb\u5b57\u7b26</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u589e\u52a0\u8bcd\u7f00</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u683c\u5f0f\u7c7b\u4f3c\u7684\u6761\u4ef6\u3002</p>\n</li>\n</ul>\n</div>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u770b\u8d77\u6765\u548c<span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.dict</code>\u6587\u4ef6\u76f8\u4f3c\uff1a</p>\n<pre class=\"programlisting\">larder/M\nlardy/RT\nlarge/RSPMYT\nlargehearted\n</pre>\n<div class=\"note\">\n<h3 class=\"title\" lang=\"zh\">\u6ce8\u610f</h3>\n<p lang=\"zh\"><span class=\"application\">MySpell</span> \u4e0d\u652f\u6301\u590d\u5408\u8bcd\u3002<span class=\"application\">Hunspell</span>\u5219\u5bf9\u590d\u5408\u8bcd\u6709\u66f4\u597d\u7684\u652f\u6301\u3002\u5f53\u524d\uff0c<span class=\"productname\">PostgreSQL</span>\u53ea\u5b9e\u73b0\u4e86 Hunspell \u4e2d\u57fa\u672c\u7684\u590d\u5408\u8bcd\u64cd\u4f5c\u3002</p>\n</div>\n</div>", "manual_path": "/docs/17/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "localization": {"status": "complete", "sources": [{"url": "/docs/17/textsearch-dictionaries.html", "method": "same-major semantic node", "sha256": "9ae724601e3e21dc17e22f93fdf7cb7ec6676cf9c7146d94abffd816534cd171", "language": "zh", "matched_nodes": ["#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[4]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/h3[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[11]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[13]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[15]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[16]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[18]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[20]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[22]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[24]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[5]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[6]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[7]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[9]", "#TEXTSEARCH-DICTIONARIES/div[1]/dl[0]/dt[4]"]}], "language": "zh", "original_text": {"/versions/17/description/0": "ispell dictionary", "/versions/17/facts/0/label": "Tmplname", "/versions/17/facts/1/label": "Tmplinit", "/versions/17/facts/2/label": "Tmpllexize"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "e44e3c3e3877615bfd6288dd838fef8e910c287ff3c0cd5a988673617eb9220e"}, "comparison_data": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "comparison_hash": "8b7d546e289f525321c9b7a6612c5fe0397f3f32c93ab170f863a07763c524b0", "manual_language": "zh"}, "18": {"facts": [{"label": "\u6a21\u677f\u540d\u79f0\uff08tmplname\uff09", "value": "ispell"}, {"label": "\u521d\u59cb\u5316\u51fd\u6570\uff08tmplinit\uff09", "value": "dispell_init"}, {"label": "\u8bcd\u6cd5\u5316\u51fd\u6570\uff08tmpllexize\uff09", "value": "dispell_lexize"}], "tables": [], "aliases": [], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "catalog_fingerprint": "65c93d6048ef30e61023a84f9680fa6a92b1c383b7eb226741170077eb078502"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "https://pg.center/docs/18/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "path": "textsearch-dictionaries.html", "label": "PostgreSQL 18 English manual", "sha256": "736b212545d12542777fa6d106bbf5b159fe5617123a208d36a8a572130c3fa6", "language": "en", "original_url": "/docs/18/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY"}], "sections": [], "signature": "", "attributes": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "description": ["ispell \u8bcd\u5178"], "manual_html": "<div class=\"sect2\" id=\"TEXTSEARCH-ISPELL-DICTIONARY\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY\">12.6.5. <span class=\"application\">Ispell</span> \u8bcd\u5178</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u8bcd\u5178\u6a21\u677f\u652f\u6301<em class=\"firstterm\">\u5f62\u6001\u8bcd\u5178</em>\uff0c\u5b83\u53ef\u4ee5\u628a\u4e00\u4e2a\u8bcd\u7684\u8bb8\u591a\u4e0d\u540c\u8bed\u8a00\u5b66\u5f62\u5f0f\u6b63\u89c4\u5316\u4e3a\u540c\u4e00\u4e2a\u8bcd\u4f4d\u3002\u4f8b\u5982\uff0c\u4e00\u4e2a\u82f1\u8bed <span class=\"application\">Ispell</span> \u8bcd\u5178\u53ef\u4ee5\u5339\u914d\u641c\u7d22\u8bcd <code class=\"literal\">bank</code> \u7684\u6240\u6709\u53d8\u683c\u548c\u53d8\u4f4d\u5f62\u5f0f\uff0c\u4f8b\u5982 <code class=\"literal\">banking</code>\u3001<code class=\"literal\">banked</code>\u3001<code class=\"literal\">banks</code>\u3001<code class=\"literal\">banks'</code> \u548c <code class=\"literal\">bank's</code>\u3002</p>\n<p lang=\"zh\">\u6807\u51c6<span class=\"productname\">PostgreSQL</span>\u53d1\u884c\u7248\u4e0d\u5305\u542b\u4efb\u4f55<span class=\"application\">Ispell</span>\u914d\u7f6e\u6587\u4ef6\u3002\u5927\u91cf\u8bed\u8a00\u7684\u8bcd\u5178\u53ef\u4ece<a class=\"ulink\" href=\"https://www.cs.hmc.edu/~geoff/ispell.html\" target=\"_top\">Ispell</a>\u83b7\u53d6\u3002\u6b64\u5916\uff0c\u8fd8\u652f\u6301\u4e00\u4e9b\u66f4\u73b0\u4ee3\u7684\u8bcd\u5178\u6587\u4ef6\u683c\u5f0f \u2014 <a class=\"ulink\" href=\"https://en.wikipedia.org/wiki/MySpell\" target=\"_top\">MySpell</a> (OO &lt; 2.0.1) \u548c<a class=\"ulink\" href=\"https://hunspell.github.io/\" target=\"_top\">Hunspell</a>(OO &gt;= 2.0.2)\u3002\u5728<a class=\"ulink\" href=\"https://wiki.openoffice.org/wiki/Dictionaries\" target=\"_top\">OpenOffice Wiki</a>\u4e0a\u6709\u5927\u91cf\u8bcd\u5178\u53ef\u7528\u3002</p>\n<p lang=\"zh\">\u8981\u521b\u5efa\u4e00\u4e2a<span class=\"application\">Ispell</span>\u8bcd\u5178\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4e0b\u8f7d\u8bcd\u5178\u914d\u7f6e\u6587\u4ef6\u3002<span class=\"productname\">OpenOffice</span>\u6269\u5c55\u6587\u4ef6\u7684\u6269\u5c55\u540d\u662f<code class=\"filename\">.oxt</code>\u3002\u9700\u8981\u63d0\u53d6<code class=\"filename\">.aff</code>\u548c<code class=\"filename\">.dic</code>\u6587\u4ef6\uff0c\u5c06\u6269\u5c55\u540d\u6539\u4e3a<code class=\"filename\">.affix</code>\u548c<code class=\"filename\">.dict</code>\u3002\u5bf9\u4e8e\u67d0\u4e9b\u8bcd\u5178\u6587\u4ef6\uff0c\u8fd8\u9700\u8981\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u5b57\u7b26\u8f6c\u6362\u6210 UTF-8 \u7f16\u7801\uff08\u4f8b\u5982\u632a\u5a01\u8bed\u8bcd\u5178\uff09\uff1a</p>\n<pre class=\"programlisting\">\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.dict nn_NO.dic\n</pre>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u590d\u5236\u6587\u4ef6\u5230<code class=\"filename\">$SHAREDIR/tsearch_data</code>\u76ee\u5f55</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u6587\u4ef6\u8f7d\u5165\u5230 PostgreSQL\uff1a</p>\n<pre class=\"programlisting\">\nCREATE TEXT SEARCH DICTIONARY english_hunspell (\n    TEMPLATE = ispell,\n    DictFile = en_us,\n    AffFile = en_us,\n    Stopwords = english);\n</pre>\n</li>\n</ul>\n</div>\n<p lang=\"zh\">\u8fd9\u91cc\uff0c<code class=\"literal\">DictFile</code>\u3001<code class=\"literal\">AffFile</code>\u548c<code class=\"literal\">StopWords</code>\u6307\u5b9a\u8bcd\u5178\u3001\u8bcd\u7f00\u548c\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u57fa\u540d\u3002\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u683c\u5f0f\u548c\u524d\u9762\u89e3\u91ca\u7684<code class=\"literal\">simple</code>\u8bcd\u5178\u7c7b\u578b\u76f8\u540c\u3002\u5176\u4ed6\u6587\u4ef6\u7684\u683c\u5f0f\u5728\u8fd9\u91cc\u6ca1\u6709\u6307\u5b9a\uff0c\u4f46\u662f\u4e5f\u53ef\u4ee5\u4ece\u4e0a\u9762\u63d0\u5230\u7684\u7f51\u7ad9\u83b7\u5f97\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u901a\u5e38\u53ea\u80fd\u8bc6\u522b\u6709\u9650\u7684\u8bcd\uff0c\u56e0\u6b64\u5176\u540e\u5e94\u8ddf\u7740\u53e6\u4e00\u4e2a\u8986\u76d6\u8303\u56f4\u66f4\u5e7f\u7684\u8bcd\u5178\uff1b\u4f8b\u5982\uff0c\u4e00\u4e2a Snowball \u8bcd\u5178\uff0c\u5b83\u53ef\u4ee5\u8bc6\u522b\u6240\u6709\u8f93\u5165\u3002</p>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">prefixes\nflag *A:\n    .           &gt;   RE      # As in enter &gt; reenter\nsuffixes\nflag T:\n    E           &gt;   ST      # As in late &gt; latest\n    [^AEIOU]Y   &gt;   -Y,IEST # As in dirty &gt; dirtiest\n    [AEIOU]Y    &gt;   EST     # As in gray &gt; grayest\n    [^EY]       &gt;   EST     # As in small &gt; smallest\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">lapse/ADGRS\nlard/DGRS\nlarge/PRTY\nlark/MRS\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u7684\u683c\u5f0f\u662f\uff1a</p>\n<pre class=\"programlisting\">basic_form/affix_class_name\n</pre>\n<p lang=\"zh\">\u5728<code class=\"filename\">.affix</code>\u6587\u4ef6\u4e2d\uff0c\u6bcf\u4e00\u4e2a\u8bcd\u7f00\u6807\u5fd7\u4ee5\u4e0b\u9762\u7684\u683c\u5f0f\u63cf\u8ff0\uff1a</p>\n<pre class=\"programlisting\">condition &gt; [-stripping_letters,] adding_affix\n</pre>\n<p lang=\"zh\">\u8fd9\u91cc\u7684\u6761\u4ef6\u5177\u6709\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u76f8\u4f3c\u7684\u683c\u5f0f\u3002\u5b83\u53ef\u4ee5\u4f7f\u7528\u5206\u7ec4<code class=\"literal\">[...]</code>\u548c<code class=\"literal\">[^...]</code>\u3002\u4f8b\u5982\uff0c<code class=\"literal\">[AEIOU]Y</code>\u8868\u793a\u8bcd\u7684\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"y\"</code>\u5e76\u4e14\u5012\u6570\u7b2c\u4e8c\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"a\"</code>\u3001<code class=\"literal\">\"e\"</code>\u3001<code class=\"literal\">\"i\"</code>\u3001<code class=\"literal\">\"o\"</code>\u6216\u8005<code class=\"literal\">\"u\"</code>\u3002<code class=\"literal\">[^EY]</code>\u8868\u793a\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u65e2\u4e0d\u662f<code class=\"literal\">\"e\"</code>\u4e5f\u4e0d\u662f<code class=\"literal\">\"y\"</code>\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u652f\u6301\u5212\u5206\u590d\u5408\u8bcd\uff0c\u8fd9\u662f\u4e00\u4e2a\u6709\u7528\u7684\u7279\u6027\u3002\u6ce8\u610f\u8bcd\u7f00\u6587\u4ef6\u5e94\u8be5\u7528<code class=\"literal\">compoundwords controlled</code>\u8bed\u53e5\u6307\u5b9a\u4e00\u4e2a\u7279\u6b8a\u6807\u5fd7\uff0c\u7528\u4e8e\u6807\u8bb0\u8bcd\u5178\u4e2d\u53ef\u4ee5\u53c2\u4e0e\u6784\u6210\u590d\u5408\u8bcd\u7684\u8bcd\uff1a</p>\n<pre class=\"programlisting\">compoundwords  controlled z\n</pre>\n<p lang=\"zh\">\u4e0b\u9762\u662f\u632a\u5a01\u8bed\u7684\u4e00\u4e9b\u793a\u4f8b\uff1a</p>\n<pre class=\"programlisting\">SELECT ts_lexize('norwegian_ispell', 'overbuljongterningpakkmesterassistent');\n   {over,buljong,terning,pakk,mester,assistent}\nSELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk');\n   {sjokoladefabrikk,sjokolade,fabrikk}\n</pre>\n<p lang=\"zh\"><span class=\"application\">MySpell</span>\u683c\u5f0f\u662f<span class=\"application\">Hunspell</span>\u683c\u5f0f\u7684\u4e00\u4e2a\u5b50\u96c6\u3002<span class=\"application\">Hunspell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">PFX A Y 1\nPFX A   0     re         .\nSFX T N 4\nSFX T   0     st         e\nSFX T   y     iest       [^aeiou]y\nSFX T   0     est        [aeiou]y\nSFX T   0     est        [^ey]\n</pre>\n<p lang=\"zh\">\u4e00\u4e2a\u8bcd\u7f00\u7c7b\u7684\u7b2c\u4e00\u884c\u662f\u9996\u90e8\u3002\u9996\u90e8\u540e\u9762\u5217\u51fa\u4e86\u8bcd\u7f00\u89c4\u5219\u7684\u5b57\u6bb5\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u53c2\u6570\u540d\uff08PFX \u6216\u8005 SFX\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u6807\u5fd7\uff08\u8bcd\u7f00\u7c7b\u7684\u540d\u79f0\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4ece\u8be5\u8bcd\u7684\u5f00\u59cb\uff08\u524d\u7f00\uff09\u6216\u8005\u7ed3\u5c3e\uff08\u540e\u7f00\uff09\u5265\u79bb\u5b57\u7b26</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u589e\u52a0\u8bcd\u7f00</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u683c\u5f0f\u7c7b\u4f3c\u7684\u6761\u4ef6\u3002</p>\n</li>\n</ul>\n</div>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u770b\u8d77\u6765\u548c<span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.dict</code>\u6587\u4ef6\u76f8\u4f3c\uff1a</p>\n<pre class=\"programlisting\">larder/M\nlardy/RT\nlarge/RSPMYT\nlargehearted\n</pre>\n<div class=\"note\">\n<h3 class=\"title\" lang=\"zh\">\u6ce8\u610f</h3>\n<p lang=\"zh\"><span class=\"application\">MySpell</span> \u4e0d\u652f\u6301\u590d\u5408\u8bcd\u3002<span class=\"application\">Hunspell</span>\u5219\u5bf9\u590d\u5408\u8bcd\u6709\u66f4\u597d\u7684\u652f\u6301\u3002\u5f53\u524d\uff0c<span class=\"productname\">PostgreSQL</span>\u53ea\u5b9e\u73b0\u4e86 Hunspell \u4e2d\u57fa\u672c\u7684\u590d\u5408\u8bcd\u64cd\u4f5c\u3002</p>\n</div>\n</div>", "manual_path": "/docs/18/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "localization": {"status": "complete", "sources": [{"url": "/docs/18/textsearch-dictionaries.html", "method": "same-major semantic node", "sha256": "afe47fea3be000f5266417ceecb464ae02e5dc05e02d8d38976bd9fcf2d84563", "language": "zh", "matched_nodes": ["#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[4]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/h3[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[11]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[13]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[15]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[16]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[18]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[20]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[22]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[24]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[5]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[6]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[7]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[9]", "#TEXTSEARCH-DICTIONARIES/div[1]/dl[0]/dt[4]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "ispell dictionary", "/versions/18/facts/0/label": "Tmplname", "/versions/18/facts/1/label": "Tmplinit", "/versions/18/facts/2/label": "Tmpllexize"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "d3dd7912b3d52a2a05f4f03bd58ba13e9b45cf5dfff442e1982d83fb60b84718"}, "comparison_data": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "comparison_hash": "8b7d546e289f525321c9b7a6612c5fe0397f3f32c93ab170f863a07763c524b0", "manual_language": "zh"}, "19": {"facts": [{"label": "\u6a21\u677f\u540d\u79f0\uff08tmplname\uff09", "value": "ispell"}, {"label": "\u521d\u59cb\u5316\u51fd\u6570\uff08tmplinit\uff09", "value": "dispell_init"}, {"label": "\u8bcd\u6cd5\u5316\u51fd\u6570\uff08tmpllexize\uff09", "value": "dispell_lexize"}], "tables": [], "aliases": [], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "label": "19beta4", "major": "19", "channel": "preview", "revision": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86", "source_sha256": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86", "catalog_fingerprint": "62fbf1a3689dbe8bf7e6b3372cfe6fbf867581427b3858a94c8419b77a4d2d1d"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}, {"url": "https://pg.center/docs/19/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "path": "textsearch-dictionaries.html", "label": "PostgreSQL 19 English manual", "sha256": "cf8d1204d2952cb7b89b234f1c4f2c9c19cfa5c5a81108be7108815002f2c593", "language": "en", "original_url": "/docs/19/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY"}], "sections": [], "signature": "", "attributes": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "description": ["ispell \u8bcd\u5178"], "manual_html": "<div class=\"sect2\" id=\"TEXTSEARCH-ISPELL-DICTIONARY\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/19/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY\">12.6.5. <span class=\"application\">Ispell</span> \u8bcd\u5178</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u8bcd\u5178\u6a21\u677f\u652f\u6301<em class=\"firstterm\">\u5f62\u6001\u8bcd\u5178</em>\uff0c\u5b83\u53ef\u4ee5\u628a\u4e00\u4e2a\u8bcd\u7684\u8bb8\u591a\u4e0d\u540c\u8bed\u8a00\u5b66\u5f62\u5f0f\u6b63\u89c4\u5316\u4e3a\u540c\u4e00\u4e2a\u8bcd\u4f4d\u3002\u4f8b\u5982\uff0c\u4e00\u4e2a\u82f1\u8bed <span class=\"application\">Ispell</span> \u8bcd\u5178\u53ef\u4ee5\u5339\u914d\u641c\u7d22\u8bcd <code class=\"literal\">bank</code> \u7684\u6240\u6709\u53d8\u683c\u548c\u53d8\u4f4d\u5f62\u5f0f\uff0c\u4f8b\u5982 <code class=\"literal\">banking</code>\u3001<code class=\"literal\">banked</code>\u3001<code class=\"literal\">banks</code>\u3001<code class=\"literal\">banks'</code> \u548c <code class=\"literal\">bank's</code>\u3002</p>\n<p lang=\"zh\">\u6807\u51c6<span class=\"productname\">PostgreSQL</span>\u53d1\u884c\u7248\u4e0d\u5305\u542b\u4efb\u4f55<span class=\"application\">Ispell</span>\u914d\u7f6e\u6587\u4ef6\u3002\u5927\u91cf\u8bed\u8a00\u7684\u8bcd\u5178\u53ef\u4ece<a class=\"ulink\" href=\"https://www.cs.hmc.edu/~geoff/ispell.html\" target=\"_top\">Ispell</a>\u83b7\u53d6\u3002\u6b64\u5916\uff0c\u8fd8\u652f\u6301\u4e00\u4e9b\u66f4\u73b0\u4ee3\u7684\u8bcd\u5178\u6587\u4ef6\u683c\u5f0f \u2014 <a class=\"ulink\" href=\"https://en.wikipedia.org/wiki/MySpell\" target=\"_top\">MySpell</a> (OO &lt; 2.0.1) \u548c<a class=\"ulink\" href=\"https://hunspell.github.io/\" target=\"_top\">Hunspell</a>(OO &gt;= 2.0.2)\u3002\u5728<a class=\"ulink\" href=\"https://wiki.openoffice.org/wiki/Dictionaries\" target=\"_top\">OpenOffice Wiki</a>\u4e0a\u6709\u5927\u91cf\u8bcd\u5178\u53ef\u7528\u3002</p>\n<p lang=\"zh\">\u8981\u521b\u5efa\u4e00\u4e2a<span class=\"application\">Ispell</span>\u8bcd\u5178\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4e0b\u8f7d\u8bcd\u5178\u914d\u7f6e\u6587\u4ef6\u3002<span class=\"productname\">OpenOffice</span>\u6269\u5c55\u6587\u4ef6\u7684\u6269\u5c55\u540d\u662f<code class=\"filename\">.oxt</code>\u3002\u9700\u8981\u63d0\u53d6<code class=\"filename\">.aff</code>\u548c<code class=\"filename\">.dic</code>\u6587\u4ef6\uff0c\u5c06\u6269\u5c55\u540d\u6539\u4e3a<code class=\"filename\">.affix</code>\u548c<code class=\"filename\">.dict</code>\u3002\u5bf9\u4e8e\u67d0\u4e9b\u8bcd\u5178\u6587\u4ef6\uff0c\u8fd8\u9700\u8981\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u5b57\u7b26\u8f6c\u6362\u6210 UTF-8 \u7f16\u7801\uff08\u4f8b\u5982\u632a\u5a01\u8bed\u8bcd\u5178\uff09\uff1a</p>\n<pre class=\"programlisting\">\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.dict nn_NO.dic\n</pre>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u590d\u5236\u6587\u4ef6\u5230<code class=\"filename\">$SHAREDIR/tsearch_data</code>\u76ee\u5f55</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u6587\u4ef6\u8f7d\u5165\u5230 PostgreSQL\uff1a</p>\n<pre class=\"programlisting\">\nCREATE TEXT SEARCH DICTIONARY english_hunspell (\n    TEMPLATE = ispell,\n    DictFile = en_us,\n    AffFile = en_us,\n    Stopwords = english);\n</pre>\n</li>\n</ul>\n</div>\n<p lang=\"zh\">\u8fd9\u91cc\uff0c<code class=\"literal\">DictFile</code>\u3001<code class=\"literal\">AffFile</code>\u548c<code class=\"literal\">StopWords</code>\u6307\u5b9a\u8bcd\u5178\u3001\u8bcd\u7f00\u548c\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u57fa\u540d\u3002\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u683c\u5f0f\u548c\u524d\u9762\u89e3\u91ca\u7684<code class=\"literal\">simple</code>\u8bcd\u5178\u7c7b\u578b\u76f8\u540c\u3002\u5176\u4ed6\u6587\u4ef6\u7684\u683c\u5f0f\u5728\u8fd9\u91cc\u6ca1\u6709\u6307\u5b9a\uff0c\u4f46\u662f\u4e5f\u53ef\u4ee5\u4ece\u4e0a\u9762\u63d0\u5230\u7684\u7f51\u7ad9\u83b7\u5f97\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u901a\u5e38\u53ea\u80fd\u8bc6\u522b\u6709\u9650\u7684\u8bcd\uff0c\u56e0\u6b64\u5176\u540e\u5e94\u8ddf\u7740\u53e6\u4e00\u4e2a\u8986\u76d6\u8303\u56f4\u66f4\u5e7f\u7684\u8bcd\u5178\uff1b\u4f8b\u5982\uff0c\u4e00\u4e2a Snowball \u8bcd\u5178\uff0c\u5b83\u53ef\u4ee5\u8bc6\u522b\u6240\u6709\u8f93\u5165\u3002</p>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">prefixes\nflag *A:\n    .           &gt;   RE      # As in enter &gt; reenter\nsuffixes\nflag T:\n    E           &gt;   ST      # As in late &gt; latest\n    [^AEIOU]Y   &gt;   -Y,IEST # As in dirty &gt; dirtiest\n    [AEIOU]Y    &gt;   EST     # As in gray &gt; grayest\n    [^EY]       &gt;   EST     # As in small &gt; smallest\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">lapse/ADGRS\nlard/DGRS\nlarge/PRTY\nlark/MRS\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u7684\u683c\u5f0f\u662f\uff1a</p>\n<pre class=\"programlisting\">basic_form/affix_class_name\n</pre>\n<p lang=\"zh\">\u5728<code class=\"filename\">.affix</code>\u6587\u4ef6\u4e2d\uff0c\u6bcf\u4e00\u4e2a\u8bcd\u7f00\u6807\u5fd7\u4ee5\u4e0b\u9762\u7684\u683c\u5f0f\u63cf\u8ff0\uff1a</p>\n<pre class=\"programlisting\">condition &gt; [-stripping_letters,] adding_affix\n</pre>\n<p lang=\"zh\">\u8fd9\u91cc\u7684\u6761\u4ef6\u5177\u6709\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u76f8\u4f3c\u7684\u683c\u5f0f\u3002\u5b83\u53ef\u4ee5\u4f7f\u7528\u5206\u7ec4<code class=\"literal\">[...]</code>\u548c<code class=\"literal\">[^...]</code>\u3002\u4f8b\u5982\uff0c<code class=\"literal\">[AEIOU]Y</code>\u8868\u793a\u8bcd\u7684\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"y\"</code>\u5e76\u4e14\u5012\u6570\u7b2c\u4e8c\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"a\"</code>\u3001<code class=\"literal\">\"e\"</code>\u3001<code class=\"literal\">\"i\"</code>\u3001<code class=\"literal\">\"o\"</code>\u6216\u8005<code class=\"literal\">\"u\"</code>\u3002<code class=\"literal\">[^EY]</code>\u8868\u793a\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u65e2\u4e0d\u662f<code class=\"literal\">\"e\"</code>\u4e5f\u4e0d\u662f<code class=\"literal\">\"y\"</code>\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u652f\u6301\u5212\u5206\u590d\u5408\u8bcd\uff0c\u8fd9\u662f\u4e00\u4e2a\u6709\u7528\u7684\u7279\u6027\u3002\u6ce8\u610f\u8bcd\u7f00\u6587\u4ef6\u5e94\u8be5\u7528<code class=\"literal\">compoundwords controlled</code>\u8bed\u53e5\u6307\u5b9a\u4e00\u4e2a\u7279\u6b8a\u6807\u5fd7\uff0c\u7528\u4e8e\u6807\u8bb0\u8bcd\u5178\u4e2d\u53ef\u4ee5\u53c2\u4e0e\u6784\u6210\u590d\u5408\u8bcd\u7684\u8bcd\uff1a</p>\n<pre class=\"programlisting\">compoundwords  controlled z\n</pre>\n<p lang=\"zh\">\u4e0b\u9762\u662f\u632a\u5a01\u8bed\u7684\u4e00\u4e9b\u793a\u4f8b\uff1a</p>\n<pre class=\"programlisting\">SELECT ts_lexize('norwegian_ispell', 'overbuljongterningpakkmesterassistent');\n   {over,buljong,terning,pakk,mester,assistent}\nSELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk');\n   {sjokoladefabrikk,sjokolade,fabrikk}\n</pre>\n<p lang=\"zh\"><span class=\"application\">MySpell</span>\u683c\u5f0f\u662f<span class=\"application\">Hunspell</span>\u683c\u5f0f\u7684\u4e00\u4e2a\u5b50\u96c6\u3002<span class=\"application\">Hunspell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">PFX A Y 1\nPFX A   0     re         .\nSFX T N 4\nSFX T   0     st         e\nSFX T   y     iest       [^aeiou]y\nSFX T   0     est        [aeiou]y\nSFX T   0     est        [^ey]\n</pre>\n<p lang=\"zh\">\u4e00\u4e2a\u8bcd\u7f00\u7c7b\u7684\u7b2c\u4e00\u884c\u662f\u9996\u90e8\u3002\u9996\u90e8\u540e\u9762\u5217\u51fa\u4e86\u8bcd\u7f00\u89c4\u5219\u7684\u5b57\u6bb5\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u53c2\u6570\u540d\uff08PFX \u6216\u8005 SFX\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u6807\u5fd7\uff08\u8bcd\u7f00\u7c7b\u7684\u540d\u79f0\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4ece\u8be5\u8bcd\u7684\u5f00\u59cb\uff08\u524d\u7f00\uff09\u6216\u8005\u7ed3\u5c3e\uff08\u540e\u7f00\uff09\u5265\u79bb\u5b57\u7b26</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u589e\u52a0\u8bcd\u7f00</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u683c\u5f0f\u7c7b\u4f3c\u7684\u6761\u4ef6\u3002</p>\n</li>\n</ul>\n</div>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u770b\u8d77\u6765\u548c<span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.dict</code>\u6587\u4ef6\u76f8\u4f3c\uff1a</p>\n<pre class=\"programlisting\">larder/M\nlardy/RT\nlarge/RSPMYT\nlargehearted\n</pre>\n<div class=\"note\">\n<h3 class=\"title\" lang=\"zh\">\u6ce8\u610f</h3>\n<p lang=\"zh\"><span class=\"application\">MySpell</span> \u4e0d\u652f\u6301\u590d\u5408\u8bcd\u3002<span class=\"application\">Hunspell</span>\u5219\u5bf9\u590d\u5408\u8bcd\u6709\u66f4\u597d\u7684\u652f\u6301\u3002\u5f53\u524d\uff0c<span class=\"productname\">PostgreSQL</span>\u53ea\u5b9e\u73b0\u4e86 Hunspell \u4e2d\u57fa\u672c\u7684\u590d\u5408\u8bcd\u64cd\u4f5c\u3002</p>\n</div>\n</div>", "manual_path": "/docs/19/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "localization": {"status": "complete", "sources": [{"url": "/docs/19/textsearch-dictionaries.html", "method": "same-major semantic node", "sha256": "c867ceccebd59d165b0d78a4b0c0307529ac3bc90c9183020b322507ce0e1870", "language": "zh", "matched_nodes": ["#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[4]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/h3[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[11]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[13]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[15]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[16]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[18]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[20]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[22]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[24]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[5]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[6]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[7]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[9]", "#TEXTSEARCH-DICTIONARIES/div[1]/dl[0]/dt[4]"]}], "language": "zh", "original_text": {"/versions/19/description/0": "ispell dictionary", "/versions/19/facts/0/label": "Tmplname", "/versions/19/facts/1/label": "Tmplinit", "/versions/19/facts/2/label": "Tmpllexize"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "f0a69a1ec61d1ed697e5b164a564c9752431dad2124d52c297cb2ac9f4476704"}, "comparison_data": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "comparison_hash": "8b7d546e289f525321c9b7a6612c5fe0397f3f32c93ab170f863a07763c524b0", "manual_language": "zh"}, "20": {"facts": [{"label": "\u6a21\u677f\u540d\u79f0\uff08tmplname\uff09", "value": "ispell"}, {"label": "\u521d\u59cb\u5316\u51fd\u6570\uff08tmplinit\uff09", "value": "dispell_init"}, {"label": "\u8bcd\u6cd5\u5316\u51fd\u6570\uff08tmpllexize\uff09", "value": "dispell_lexize"}], "tables": [], "aliases": [], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "label": "20devel", "major": "20", "channel": "devel", "revision": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41", "source_sha256": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41", "catalog_fingerprint": "398fbb9f262264053c02fbf79f88be0a6770c1473faa6ecd5931d6ec41b8258b", "source_snapshot_utc": "26-Sep-2026 20:22"}, "sources": [{"url": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41"}, {"url": "https://pg.center/docs/devel/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "path": "textsearch-dictionaries.html", "label": "PostgreSQL 20 English manual", "sha256": "38c6f6073ed98b8e321cad040c89265f00a6fe755aa68f0f1a28a1ad1457c9c0", "language": "en", "original_url": "/docs/devel/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY"}], "sections": [], "signature": "", "attributes": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "description": ["ispell \u8bcd\u5178"], "manual_html": "<div class=\"sect2\" id=\"TEXTSEARCH-ISPELL-DICTIONARY\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/devel/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY\">12.6.5. <span class=\"application\">Ispell</span> \u8bcd\u5178</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u8bcd\u5178\u6a21\u677f\u652f\u6301<em class=\"firstterm\">\u5f62\u6001\u8bcd\u5178</em>\uff0c\u5b83\u53ef\u4ee5\u628a\u4e00\u4e2a\u8bcd\u7684\u8bb8\u591a\u4e0d\u540c\u8bed\u8a00\u5b66\u5f62\u5f0f\u6b63\u89c4\u5316\u4e3a\u540c\u4e00\u4e2a\u8bcd\u4f4d\u3002\u4f8b\u5982\uff0c\u4e00\u4e2a\u82f1\u8bed <span class=\"application\">Ispell</span> \u8bcd\u5178\u53ef\u4ee5\u5339\u914d\u641c\u7d22\u8bcd <code class=\"literal\">bank</code> \u7684\u6240\u6709\u53d8\u683c\u548c\u53d8\u4f4d\u5f62\u5f0f\uff0c\u4f8b\u5982 <code class=\"literal\">banking</code>\u3001<code class=\"literal\">banked</code>\u3001<code class=\"literal\">banks</code>\u3001<code class=\"literal\">banks'</code> \u548c <code class=\"literal\">bank's</code>\u3002</p>\n<p lang=\"zh\">\u6807\u51c6<span class=\"productname\">PostgreSQL</span>\u53d1\u884c\u7248\u4e0d\u5305\u542b\u4efb\u4f55<span class=\"application\">Ispell</span>\u914d\u7f6e\u6587\u4ef6\u3002\u5927\u91cf\u8bed\u8a00\u7684\u8bcd\u5178\u53ef\u4ece<a class=\"ulink\" href=\"https://www.cs.hmc.edu/~geoff/ispell.html\" target=\"_top\">Ispell</a>\u83b7\u53d6\u3002\u6b64\u5916\uff0c\u8fd8\u652f\u6301\u4e00\u4e9b\u66f4\u73b0\u4ee3\u7684\u8bcd\u5178\u6587\u4ef6\u683c\u5f0f \u2014 <a class=\"ulink\" href=\"https://en.wikipedia.org/wiki/MySpell\" target=\"_top\">MySpell</a> (OO &lt; 2.0.1) \u548c<a class=\"ulink\" href=\"https://hunspell.github.io/\" target=\"_top\">Hunspell</a>(OO &gt;= 2.0.2)\u3002\u5728<a class=\"ulink\" href=\"https://wiki.openoffice.org/wiki/Dictionaries\" target=\"_top\">OpenOffice Wiki</a>\u4e0a\u6709\u5927\u91cf\u8bcd\u5178\u53ef\u7528\u3002</p>\n<p lang=\"zh\">\u8981\u521b\u5efa\u4e00\u4e2a<span class=\"application\">Ispell</span>\u8bcd\u5178\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4e0b\u8f7d\u8bcd\u5178\u914d\u7f6e\u6587\u4ef6\u3002<span class=\"productname\">OpenOffice</span>\u6269\u5c55\u6587\u4ef6\u7684\u6269\u5c55\u540d\u662f<code class=\"filename\">.oxt</code>\u3002\u9700\u8981\u63d0\u53d6<code class=\"filename\">.aff</code>\u548c<code class=\"filename\">.dic</code>\u6587\u4ef6\uff0c\u5c06\u6269\u5c55\u540d\u6539\u4e3a<code class=\"filename\">.affix</code>\u548c<code class=\"filename\">.dict</code>\u3002\u5bf9\u4e8e\u67d0\u4e9b\u8bcd\u5178\u6587\u4ef6\uff0c\u8fd8\u9700\u8981\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u5b57\u7b26\u8f6c\u6362\u6210 UTF-8 \u7f16\u7801\uff08\u4f8b\u5982\u632a\u5a01\u8bed\u8bcd\u5178\uff09\uff1a</p>\n<pre class=\"programlisting\">\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.dict nn_NO.dic\n</pre>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u590d\u5236\u6587\u4ef6\u5230<code class=\"filename\">$SHAREDIR/tsearch_data</code>\u76ee\u5f55</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u6587\u4ef6\u8f7d\u5165\u5230 PostgreSQL\uff1a</p>\n<pre class=\"programlisting\">\nCREATE TEXT SEARCH DICTIONARY english_hunspell (\n    TEMPLATE = ispell,\n    DictFile = en_us,\n    AffFile = en_us,\n    Stopwords = english);\n</pre>\n</li>\n</ul>\n</div>\n<p lang=\"zh\">\u8fd9\u91cc\uff0c<code class=\"literal\">DictFile</code>\u3001<code class=\"literal\">AffFile</code>\u548c<code class=\"literal\">StopWords</code>\u6307\u5b9a\u8bcd\u5178\u3001\u8bcd\u7f00\u548c\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u57fa\u540d\u3002\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u683c\u5f0f\u548c\u524d\u9762\u89e3\u91ca\u7684<code class=\"literal\">simple</code>\u8bcd\u5178\u7c7b\u578b\u76f8\u540c\u3002\u5176\u4ed6\u6587\u4ef6\u7684\u683c\u5f0f\u5728\u8fd9\u91cc\u6ca1\u6709\u6307\u5b9a\uff0c\u4f46\u662f\u4e5f\u53ef\u4ee5\u4ece\u4e0a\u9762\u63d0\u5230\u7684\u7f51\u7ad9\u83b7\u5f97\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u901a\u5e38\u53ea\u80fd\u8bc6\u522b\u6709\u9650\u7684\u8bcd\uff0c\u56e0\u6b64\u5176\u540e\u5e94\u8ddf\u7740\u53e6\u4e00\u4e2a\u8986\u76d6\u8303\u56f4\u66f4\u5e7f\u7684\u8bcd\u5178\uff1b\u4f8b\u5982\uff0c\u4e00\u4e2a Snowball \u8bcd\u5178\uff0c\u5b83\u53ef\u4ee5\u8bc6\u522b\u6240\u6709\u8f93\u5165\u3002</p>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">prefixes\nflag *A:\n    .           &gt;   RE      # As in enter &gt; reenter\nsuffixes\nflag T:\n    E           &gt;   ST      # As in late &gt; latest\n    [^AEIOU]Y   &gt;   -Y,IEST # As in dirty &gt; dirtiest\n    [AEIOU]Y    &gt;   EST     # As in gray &gt; grayest\n    [^EY]       &gt;   EST     # As in small &gt; smallest\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">lapse/ADGRS\nlard/DGRS\nlarge/PRTY\nlark/MRS\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u7684\u683c\u5f0f\u662f\uff1a</p>\n<pre class=\"programlisting\">basic_form/affix_class_name\n</pre>\n<p lang=\"zh\">\u5728<code class=\"filename\">.affix</code>\u6587\u4ef6\u4e2d\uff0c\u6bcf\u4e00\u4e2a\u8bcd\u7f00\u6807\u5fd7\u4ee5\u4e0b\u9762\u7684\u683c\u5f0f\u63cf\u8ff0\uff1a</p>\n<pre class=\"programlisting\">condition &gt; [-stripping_letters,] adding_affix\n</pre>\n<p lang=\"zh\">\u8fd9\u91cc\u7684\u6761\u4ef6\u5177\u6709\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u76f8\u4f3c\u7684\u683c\u5f0f\u3002\u5b83\u53ef\u4ee5\u4f7f\u7528\u5206\u7ec4<code class=\"literal\">[...]</code>\u548c<code class=\"literal\">[^...]</code>\u3002\u4f8b\u5982\uff0c<code class=\"literal\">[AEIOU]Y</code>\u8868\u793a\u8bcd\u7684\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"y\"</code>\u5e76\u4e14\u5012\u6570\u7b2c\u4e8c\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"a\"</code>\u3001<code class=\"literal\">\"e\"</code>\u3001<code class=\"literal\">\"i\"</code>\u3001<code class=\"literal\">\"o\"</code>\u6216\u8005<code class=\"literal\">\"u\"</code>\u3002<code class=\"literal\">[^EY]</code>\u8868\u793a\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u65e2\u4e0d\u662f<code class=\"literal\">\"e\"</code>\u4e5f\u4e0d\u662f<code class=\"literal\">\"y\"</code>\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u652f\u6301\u5212\u5206\u590d\u5408\u8bcd\uff0c\u8fd9\u662f\u4e00\u4e2a\u6709\u7528\u7684\u7279\u6027\u3002\u6ce8\u610f\u8bcd\u7f00\u6587\u4ef6\u5e94\u8be5\u7528<code class=\"literal\">compoundwords controlled</code>\u8bed\u53e5\u6307\u5b9a\u4e00\u4e2a\u7279\u6b8a\u6807\u5fd7\uff0c\u7528\u4e8e\u6807\u8bb0\u8bcd\u5178\u4e2d\u53ef\u4ee5\u53c2\u4e0e\u6784\u6210\u590d\u5408\u8bcd\u7684\u8bcd\uff1a</p>\n<pre class=\"programlisting\">compoundwords  controlled z\n</pre>\n<p lang=\"zh\">\u4e0b\u9762\u662f\u632a\u5a01\u8bed\u7684\u4e00\u4e9b\u793a\u4f8b\uff1a</p>\n<pre class=\"programlisting\">SELECT ts_lexize('norwegian_ispell', 'overbuljongterningpakkmesterassistent');\n   {over,buljong,terning,pakk,mester,assistent}\nSELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk');\n   {sjokoladefabrikk,sjokolade,fabrikk}\n</pre>\n<p lang=\"zh\"><span class=\"application\">MySpell</span>\u683c\u5f0f\u662f<span class=\"application\">Hunspell</span>\u683c\u5f0f\u7684\u4e00\u4e2a\u5b50\u96c6\u3002<span class=\"application\">Hunspell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">PFX A Y 1\nPFX A   0     re         .\nSFX T N 4\nSFX T   0     st         e\nSFX T   y     iest       [^aeiou]y\nSFX T   0     est        [aeiou]y\nSFX T   0     est        [^ey]\n</pre>\n<p lang=\"zh\">\u4e00\u4e2a\u8bcd\u7f00\u7c7b\u7684\u7b2c\u4e00\u884c\u662f\u9996\u90e8\u3002\u9996\u90e8\u540e\u9762\u5217\u51fa\u4e86\u8bcd\u7f00\u89c4\u5219\u7684\u5b57\u6bb5\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u53c2\u6570\u540d\uff08PFX \u6216\u8005 SFX\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u6807\u5fd7\uff08\u8bcd\u7f00\u7c7b\u7684\u540d\u79f0\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4ece\u8be5\u8bcd\u7684\u5f00\u59cb\uff08\u524d\u7f00\uff09\u6216\u8005\u7ed3\u5c3e\uff08\u540e\u7f00\uff09\u5265\u79bb\u5b57\u7b26</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u589e\u52a0\u8bcd\u7f00</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u683c\u5f0f\u7c7b\u4f3c\u7684\u6761\u4ef6\u3002</p>\n</li>\n</ul>\n</div>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u770b\u8d77\u6765\u548c<span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.dict</code>\u6587\u4ef6\u76f8\u4f3c\uff1a</p>\n<pre class=\"programlisting\">larder/M\nlardy/RT\nlarge/RSPMYT\nlargehearted\n</pre>\n<div class=\"note\">\n<h3 class=\"title\" lang=\"zh\">\u6ce8\u610f</h3>\n<p lang=\"zh\"><span class=\"application\">MySpell</span> \u4e0d\u652f\u6301\u590d\u5408\u8bcd\u3002<span class=\"application\">Hunspell</span>\u5219\u5bf9\u590d\u5408\u8bcd\u6709\u66f4\u597d\u7684\u652f\u6301\u3002\u5f53\u524d\uff0c<span class=\"productname\">PostgreSQL</span>\u53ea\u5b9e\u73b0\u4e86 Hunspell \u4e2d\u57fa\u672c\u7684\u590d\u5408\u8bcd\u64cd\u4f5c\u3002</p>\n</div>\n</div>", "manual_path": "/docs/devel/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "localization": {"status": "complete", "sources": [{"url": "/docs/devel/textsearch-dictionaries.html", "method": "same-major semantic node", "sha256": "682603a92eb3390ca6eef864d76a77272216806e918815781321c56df0c777a3", "language": "zh", "matched_nodes": ["#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[4]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/h3[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[11]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[13]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[15]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[16]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[18]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[20]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[22]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[24]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[5]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[6]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[7]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[9]", "#TEXTSEARCH-DICTIONARIES/div[1]/dl[0]/dt[4]"]}], "language": "zh", "original_text": {"/summary": "ispell dictionary", "/category": "Dictionary templates", "/versions/20/description/0": "ispell dictionary", "/versions/20/facts/0/label": "Tmplname", "/versions/20/facts/1/label": "Tmplinit", "/versions/20/facts/2/label": "Tmpllexize"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "6c0a8bb9c51c1d95341d5bf0189077ff138591eb3cce34a3dc714c20565b4569"}, "comparison_data": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "comparison_hash": "8b7d546e289f525321c9b7a6612c5fe0397f3f32c93ab170f863a07763c524b0", "manual_language": "zh"}}}, "snapshot": {"facts": [{"label": "\u6a21\u677f\u540d\u79f0\uff08tmplname\uff09", "value": "ispell"}, {"label": "\u521d\u59cb\u5316\u51fd\u6570\uff08tmplinit\uff09", "value": "dispell_init"}, {"label": "\u8bcd\u6cd5\u5316\u51fd\u6570\uff08tmpllexize\uff09", "value": "dispell_lexize"}], "tables": [], "aliases": [], "related": [], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "catalog_fingerprint": "65c93d6048ef30e61023a84f9680fa6a92b1c383b7eb226741170077eb078502"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "https://pg.center/docs/18/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "path": "textsearch-dictionaries.html", "label": "PostgreSQL 18 English manual", "sha256": "736b212545d12542777fa6d106bbf5b159fe5617123a208d36a8a572130c3fa6", "language": "en", "original_url": "/docs/18/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY"}], "sections": [], "signature": "", "attributes": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "description": ["ispell \u8bcd\u5178"], "manual_html": "<div class=\"sect2\" id=\"TEXTSEARCH-ISPELL-DICTIONARY\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY\">12.6.5. <span class=\"application\">Ispell</span> \u8bcd\u5178</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u8bcd\u5178\u6a21\u677f\u652f\u6301<em class=\"firstterm\">\u5f62\u6001\u8bcd\u5178</em>\uff0c\u5b83\u53ef\u4ee5\u628a\u4e00\u4e2a\u8bcd\u7684\u8bb8\u591a\u4e0d\u540c\u8bed\u8a00\u5b66\u5f62\u5f0f\u6b63\u89c4\u5316\u4e3a\u540c\u4e00\u4e2a\u8bcd\u4f4d\u3002\u4f8b\u5982\uff0c\u4e00\u4e2a\u82f1\u8bed <span class=\"application\">Ispell</span> \u8bcd\u5178\u53ef\u4ee5\u5339\u914d\u641c\u7d22\u8bcd <code class=\"literal\">bank</code> \u7684\u6240\u6709\u53d8\u683c\u548c\u53d8\u4f4d\u5f62\u5f0f\uff0c\u4f8b\u5982 <code class=\"literal\">banking</code>\u3001<code class=\"literal\">banked</code>\u3001<code class=\"literal\">banks</code>\u3001<code class=\"literal\">banks'</code> \u548c <code class=\"literal\">bank's</code>\u3002</p>\n<p lang=\"zh\">\u6807\u51c6<span class=\"productname\">PostgreSQL</span>\u53d1\u884c\u7248\u4e0d\u5305\u542b\u4efb\u4f55<span class=\"application\">Ispell</span>\u914d\u7f6e\u6587\u4ef6\u3002\u5927\u91cf\u8bed\u8a00\u7684\u8bcd\u5178\u53ef\u4ece<a class=\"ulink\" href=\"https://www.cs.hmc.edu/~geoff/ispell.html\" target=\"_top\">Ispell</a>\u83b7\u53d6\u3002\u6b64\u5916\uff0c\u8fd8\u652f\u6301\u4e00\u4e9b\u66f4\u73b0\u4ee3\u7684\u8bcd\u5178\u6587\u4ef6\u683c\u5f0f \u2014 <a class=\"ulink\" href=\"https://en.wikipedia.org/wiki/MySpell\" target=\"_top\">MySpell</a> (OO &lt; 2.0.1) \u548c<a class=\"ulink\" href=\"https://hunspell.github.io/\" target=\"_top\">Hunspell</a>(OO &gt;= 2.0.2)\u3002\u5728<a class=\"ulink\" href=\"https://wiki.openoffice.org/wiki/Dictionaries\" target=\"_top\">OpenOffice Wiki</a>\u4e0a\u6709\u5927\u91cf\u8bcd\u5178\u53ef\u7528\u3002</p>\n<p lang=\"zh\">\u8981\u521b\u5efa\u4e00\u4e2a<span class=\"application\">Ispell</span>\u8bcd\u5178\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4e0b\u8f7d\u8bcd\u5178\u914d\u7f6e\u6587\u4ef6\u3002<span class=\"productname\">OpenOffice</span>\u6269\u5c55\u6587\u4ef6\u7684\u6269\u5c55\u540d\u662f<code class=\"filename\">.oxt</code>\u3002\u9700\u8981\u63d0\u53d6<code class=\"filename\">.aff</code>\u548c<code class=\"filename\">.dic</code>\u6587\u4ef6\uff0c\u5c06\u6269\u5c55\u540d\u6539\u4e3a<code class=\"filename\">.affix</code>\u548c<code class=\"filename\">.dict</code>\u3002\u5bf9\u4e8e\u67d0\u4e9b\u8bcd\u5178\u6587\u4ef6\uff0c\u8fd8\u9700\u8981\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u5b57\u7b26\u8f6c\u6362\u6210 UTF-8 \u7f16\u7801\uff08\u4f8b\u5982\u632a\u5a01\u8bed\u8bcd\u5178\uff09\uff1a</p>\n<pre class=\"programlisting\">\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.affix nn_NO.aff\niconv -f ISO_8859-1 -t UTF-8 -o nn_no.dict nn_NO.dic\n</pre>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u590d\u5236\u6587\u4ef6\u5230<code class=\"filename\">$SHAREDIR/tsearch_data</code>\u76ee\u5f55</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u628a\u6587\u4ef6\u8f7d\u5165\u5230 PostgreSQL\uff1a</p>\n<pre class=\"programlisting\">\nCREATE TEXT SEARCH DICTIONARY english_hunspell (\n    TEMPLATE = ispell,\n    DictFile = en_us,\n    AffFile = en_us,\n    Stopwords = english);\n</pre>\n</li>\n</ul>\n</div>\n<p lang=\"zh\">\u8fd9\u91cc\uff0c<code class=\"literal\">DictFile</code>\u3001<code class=\"literal\">AffFile</code>\u548c<code class=\"literal\">StopWords</code>\u6307\u5b9a\u8bcd\u5178\u3001\u8bcd\u7f00\u548c\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u57fa\u540d\u3002\u505c\u7528\u8bcd\u6587\u4ef6\u7684\u683c\u5f0f\u548c\u524d\u9762\u89e3\u91ca\u7684<code class=\"literal\">simple</code>\u8bcd\u5178\u7c7b\u578b\u76f8\u540c\u3002\u5176\u4ed6\u6587\u4ef6\u7684\u683c\u5f0f\u5728\u8fd9\u91cc\u6ca1\u6709\u6307\u5b9a\uff0c\u4f46\u662f\u4e5f\u53ef\u4ee5\u4ece\u4e0a\u9762\u63d0\u5230\u7684\u7f51\u7ad9\u83b7\u5f97\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u901a\u5e38\u53ea\u80fd\u8bc6\u522b\u6709\u9650\u7684\u8bcd\uff0c\u56e0\u6b64\u5176\u540e\u5e94\u8ddf\u7740\u53e6\u4e00\u4e2a\u8986\u76d6\u8303\u56f4\u66f4\u5e7f\u7684\u8bcd\u5178\uff1b\u4f8b\u5982\uff0c\u4e00\u4e2a Snowball \u8bcd\u5178\uff0c\u5b83\u53ef\u4ee5\u8bc6\u522b\u6240\u6709\u8f93\u5165\u3002</p>\n<p lang=\"zh\"><span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">prefixes\nflag *A:\n    .           &gt;   RE      # As in enter &gt; reenter\nsuffixes\nflag T:\n    E           &gt;   ST      # As in late &gt; latest\n    [^AEIOU]Y   &gt;   -Y,IEST # As in dirty &gt; dirtiest\n    [AEIOU]Y    &gt;   EST     # As in gray &gt; grayest\n    [^EY]       &gt;   EST     # As in small &gt; smallest\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">lapse/ADGRS\nlard/DGRS\nlarge/PRTY\nlark/MRS\n</pre>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u7684\u683c\u5f0f\u662f\uff1a</p>\n<pre class=\"programlisting\">basic_form/affix_class_name\n</pre>\n<p lang=\"zh\">\u5728<code class=\"filename\">.affix</code>\u6587\u4ef6\u4e2d\uff0c\u6bcf\u4e00\u4e2a\u8bcd\u7f00\u6807\u5fd7\u4ee5\u4e0b\u9762\u7684\u683c\u5f0f\u63cf\u8ff0\uff1a</p>\n<pre class=\"programlisting\">condition &gt; [-stripping_letters,] adding_affix\n</pre>\n<p lang=\"zh\">\u8fd9\u91cc\u7684\u6761\u4ef6\u5177\u6709\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u76f8\u4f3c\u7684\u683c\u5f0f\u3002\u5b83\u53ef\u4ee5\u4f7f\u7528\u5206\u7ec4<code class=\"literal\">[...]</code>\u548c<code class=\"literal\">[^...]</code>\u3002\u4f8b\u5982\uff0c<code class=\"literal\">[AEIOU]Y</code>\u8868\u793a\u8bcd\u7684\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"y\"</code>\u5e76\u4e14\u5012\u6570\u7b2c\u4e8c\u4e2a\u5b57\u6bcd\u662f<code class=\"literal\">\"a\"</code>\u3001<code class=\"literal\">\"e\"</code>\u3001<code class=\"literal\">\"i\"</code>\u3001<code class=\"literal\">\"o\"</code>\u6216\u8005<code class=\"literal\">\"u\"</code>\u3002<code class=\"literal\">[^EY]</code>\u8868\u793a\u6700\u540e\u4e00\u4e2a\u5b57\u6bcd\u65e2\u4e0d\u662f<code class=\"literal\">\"e\"</code>\u4e5f\u4e0d\u662f<code class=\"literal\">\"y\"</code>\u3002</p>\n<p lang=\"zh\">Ispell \u8bcd\u5178\u652f\u6301\u5212\u5206\u590d\u5408\u8bcd\uff0c\u8fd9\u662f\u4e00\u4e2a\u6709\u7528\u7684\u7279\u6027\u3002\u6ce8\u610f\u8bcd\u7f00\u6587\u4ef6\u5e94\u8be5\u7528<code class=\"literal\">compoundwords controlled</code>\u8bed\u53e5\u6307\u5b9a\u4e00\u4e2a\u7279\u6b8a\u6807\u5fd7\uff0c\u7528\u4e8e\u6807\u8bb0\u8bcd\u5178\u4e2d\u53ef\u4ee5\u53c2\u4e0e\u6784\u6210\u590d\u5408\u8bcd\u7684\u8bcd\uff1a</p>\n<pre class=\"programlisting\">compoundwords  controlled z\n</pre>\n<p lang=\"zh\">\u4e0b\u9762\u662f\u632a\u5a01\u8bed\u7684\u4e00\u4e9b\u793a\u4f8b\uff1a</p>\n<pre class=\"programlisting\">SELECT ts_lexize('norwegian_ispell', 'overbuljongterningpakkmesterassistent');\n   {over,buljong,terning,pakk,mester,assistent}\nSELECT ts_lexize('norwegian_ispell', 'sjokoladefabrikk');\n   {sjokoladefabrikk,sjokolade,fabrikk}\n</pre>\n<p lang=\"zh\"><span class=\"application\">MySpell</span>\u683c\u5f0f\u662f<span class=\"application\">Hunspell</span>\u683c\u5f0f\u7684\u4e00\u4e2a\u5b50\u96c6\u3002<span class=\"application\">Hunspell</span>\u7684<code class=\"filename\">.affix</code>\u6587\u4ef6\u5177\u6709\u4e0b\u9762\u7684\u7ed3\u6784\uff1a</p>\n<pre class=\"programlisting\">PFX A Y 1\nPFX A   0     re         .\nSFX T N 4\nSFX T   0     st         e\nSFX T   y     iest       [^aeiou]y\nSFX T   0     est        [aeiou]y\nSFX T   0     est        [^ey]\n</pre>\n<p lang=\"zh\">\u4e00\u4e2a\u8bcd\u7f00\u7c7b\u7684\u7b2c\u4e00\u884c\u662f\u9996\u90e8\u3002\u9996\u90e8\u540e\u9762\u5217\u51fa\u4e86\u8bcd\u7f00\u89c4\u5219\u7684\u5b57\u6bb5\uff1a</p>\n<div class=\"itemizedlist\">\n<ul class=\"itemizedlist compact\">\n<li class=\"listitem\" lang=\"zh\">\n<p>\u53c2\u6570\u540d\uff08PFX \u6216\u8005 SFX\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u6807\u5fd7\uff08\u8bcd\u7f00\u7c7b\u7684\u540d\u79f0\uff09</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u4ece\u8be5\u8bcd\u7684\u5f00\u59cb\uff08\u524d\u7f00\uff09\u6216\u8005\u7ed3\u5c3e\uff08\u540e\u7f00\uff09\u5265\u79bb\u5b57\u7b26</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u589e\u52a0\u8bcd\u7f00</p>\n</li>\n<li class=\"listitem\" lang=\"zh\">\n<p>\u548c\u6b63\u5219\u8868\u8fbe\u5f0f\u683c\u5f0f\u7c7b\u4f3c\u7684\u6761\u4ef6\u3002</p>\n</li>\n</ul>\n</div>\n<p lang=\"zh\"><code class=\"filename\">.dict</code>\u6587\u4ef6\u770b\u8d77\u6765\u548c<span class=\"application\">Ispell</span>\u7684<code class=\"filename\">.dict</code>\u6587\u4ef6\u76f8\u4f3c\uff1a</p>\n<pre class=\"programlisting\">larder/M\nlardy/RT\nlarge/RSPMYT\nlargehearted\n</pre>\n<div class=\"note\">\n<h3 class=\"title\" lang=\"zh\">\u6ce8\u610f</h3>\n<p lang=\"zh\"><span class=\"application\">MySpell</span> \u4e0d\u652f\u6301\u590d\u5408\u8bcd\u3002<span class=\"application\">Hunspell</span>\u5219\u5bf9\u590d\u5408\u8bcd\u6709\u66f4\u597d\u7684\u652f\u6301\u3002\u5f53\u524d\uff0c<span class=\"productname\">PostgreSQL</span>\u53ea\u5b9e\u73b0\u4e86 Hunspell \u4e2d\u57fa\u672c\u7684\u590d\u5408\u8bcd\u64cd\u4f5c\u3002</p>\n</div>\n</div>", "manual_path": "/docs/18/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY", "localization": {"status": "complete", "sources": [{"url": "/docs/18/textsearch-dictionaries.html", "method": "same-major semantic node", "sha256": "afe47fea3be000f5266417ceecb464ae02e5dc05e02d8d38976bd9fcf2d84563", "language": "zh", "matched_nodes": ["#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[23]/ul[0]/li[4]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/h3[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[26]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[0]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/div[4]/ul[0]/li[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[11]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[13]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[15]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[16]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[18]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[1]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[20]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[22]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[24]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[2]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[3]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[5]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[6]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[7]", "#TEXTSEARCH-DICTIONARIES/div[16]/p[9]", "#TEXTSEARCH-DICTIONARIES/div[1]/dl[0]/dt[4]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "ispell dictionary", "/versions/18/facts/0/label": "Tmplname", "/versions/18/facts/1/label": "Tmplinit", "/versions/18/facts/2/label": "Tmpllexize"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "d3dd7912b3d52a2a05f4f03bd58ba13e9b45cf5dfff442e1982d83fb60b84718"}, "comparison_data": {"tmplinit": "dispell_init", "tmplname": "ispell", "tmpllexize": "dispell_lexize"}, "comparison_hash": "8b7d546e289f525321c9b7a6612c5fe0397f3f32c93ab170f863a07763c524b0", "manual_language": "zh"}, "comparison": {"left": "17", "right": "18", "status": "unchanged", "diff": ""}}