English 中文(简体)
“to_tsquery”在tsvictor上使用“simple”和“english”时产生不同的结果?
原标题:"to_tsquery" on tsvector yields different results when using "simple" and "english"?

我被征来帮助一个项目, 在多年不与PostgreSQL一起工作后, 我正跳回 PostgreSQL 。 由于缺乏使用权, 我从未使用过 tsverctor 字段, 现在发现自己正面临基于此字段的错误。 我读过关于字段类型及其目的的文件, 但我很难找到文件文件, 这些文件与英语相比, 与_ tscquery () 的第一个参数有多么简单的不同 。

示例示例示例示例

> SELECT to_tsvector( mortgag ) @@ to_tsquery( simple ,  mortgage )
?column? 
----------
 f
(1 row)

> SELECT to_tsvector( mortgag ) @@ to_tsquery( english ,  mortgage )
?column? 
----------
 t
(1 row)

我想他们应该都回到正轨 但显然第一位不是 为什么?

最佳回答

FTS使用"http://www.postagresql.org/docs/sign/static/textsearch-terminary.html" rel=“norefererr'>词典 使案文正常化:

<强>12.6. 字典

词典用来消除在搜索中不应考虑的字词(stop words ),并用来消除“em>sirizization words,这样同一词的不同派生形式将匹配。一个成功标准化的单词被称为lexeme

因此,词典被用来扔掉一些过于常见或毫无意义的东西,无法在搜索中加以考虑(stop words ),并实现其他一切的正常化,例如,“emem>city and city ,即使它们是不同的单词,也会匹配。

让我们看看"中的一些输出,http://www.postagresql.org/docs/scurrent/static/textsearch-debugging.html#TEXTSearch-CONFiguration-TESTING" rel="noreferr"\\code>ts_debug ,看看字典是怎么回事:

=> select * from ts_debug( english ,  mortgage );
   alias   |   description   |  token   |  dictionaries  |  dictionary  |  lexemes  
-----------+-----------------+----------+----------------+--------------+-----------
 asciiword | Word, all ASCII | mortgage | {english_stem} | english_stem | {mortgag}

=> select * from ts_debug( simple ,  mortgage );
   alias   |   description   |  token   | dictionaries | dictionary |  lexemes   
-----------+-----------------+----------+--------------+------------+------------
 asciiword | Word, all ASCII | mortgage | {simple}     | simple     | {mortgage}

请注意, apress 使用 apoint 字典,而 english 使用 english_stem 字典。

http://www.postagresql.org/docs/scurrent/static/textsearch-字典.html#TEXTSearch-SIMPLE-DICTIONAL" rel=“noreferr”code>emple 字典 :

操作时将输入符转换为较低大小写, 并对照停字文件进行检查。 如果在文件中找到, 则返回空数组, 导致该标记被丢弃 。 如果没有, 则以已正常化的字典形式返回小写字句 。

simple 字典只是抛出停止单词、小写字母和关于它的内容。 我们可以看到它本身的简单性:

=> select to_tsquery( simple ,  Mortgage ), to_tsquery( simple ,  Mortgages );
 to_tsquery | to_tsquery  
------------+-------------
  mortgage  |  mortgages 

simple 字典太简单,甚至无法处理简单的复数。

这个 english_stem 字典是关于什么的? “stem” 后缀是一个解脱: 本字典对将(例如) city city 转换为相同事物的单词应用了根算法。 从" http://www.postgresql.org/docs/text/textsearch-词典.html#TEXTSearch-SNOWBALL-DITIONARY" rel=“noreferr” >fine 手册 :

<强>12.6.6.6. 雪球词典

雪球字典模板基于马丁·波特的一个项目,他发明了流行的波特英语语言的断裂算法。 [.]每个算法都懂得如何将通用的变式单词写成以其语言拼写的基础或干字。

下面我们可以看到 english_stem 字典:

CREATE TEXT SEARCH DICTIONARY english_stem (
    TEMPLATE = snowball,
    Language = english,
    StopWords = english
);

所以english_stem 字典会根发字句,

=> select to_tsquery( english ,  Mortgage ), to_tsquery( english ,  Mortgages );
 to_tsquery | to_tsquery 
------------+------------
  mortgag   |  mortgag 

<强度> 执行摘要 : 简单 意味着简单的心智字匹配, english 应用到(希望) 产生更好的匹配。 后转 mortgage 进入 mortgag ,这给了您匹配的机会 。

问题回答

暂无回答




相关问题
摘录数据

我如何将Excel板的数据输入我的Django应用? I m将PosgreSQL数据库作为数据库。

Postgres dump of only parts of tables for a dev snapshot

On production our database is a few hundred gigabytes in size. For development and testing, we need to create snapshots of this database that are functionally equivalent, but which are only 10 or 20 ...

How to join attributes in sql select statement?

I want to join few attributes in select statement as one for example select id, (name + + surname + + age) as info from users this doesn t work, how to do it? I m using postgreSQL.

What text encoding to use?

I need to setup my PostgreSQL DB s text encoding to handle non-American English characters that you d find showing up in languages such as German, Spanish, and French. What character encoding should ...

SQL LIKE condition to check for integer?

I am using a set of SQL LIKE conditions to go through the alphabet and list all items beginning with the appropriate letter, e.g. to get all books where the title starts with the letter "A": SELECT * ...

热门标签