sql – tsvector上的“to_tsquery”在使用“简单”和“英文”时
我已经参加了一个项目的帮助,我没有使用它几年后,我正在潜水回到PostgreSQL.缺少使用,我从来没有遇到过使用tsvector字段,现在发现自己面临一个基于它们的错误.我阅读了关于字段类型的文档,它的目的,但是我很难挖掘关于“简单”与“english”不同的文档作为to_tsquery()的第一个参数, 例 > 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利用 dictionaries来归一化文本:
因此,字典被用来抛出在搜索(停止单词)中考虑太常见或无意义的东西,并使所有其他内容正常化,例如,即使它们是不同的单词,城市和城市也会匹配. 让我们看一下从 => 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} 请注意,简单使用简单的字典,而英语使用english_stem字典.
简单的字典只是抛出了停止的单词,下拉菜单,就是这样.我们可以看到自己的简单性: => select to_tsquery('simple','Mortgage'),to_tsquery('simple','Mortgages'); to_tsquery | to_tsquery ------------+------------- 'mortgage' | 'mortgages' 简单的字典太简单,甚至不能处理简单的复数. 那么这个english_stem字典是什么? “茎”后缀是一个放弃:这个字典应用一个词干算法来转换(例如)城市和城市到同一个字.从fine manual:
而在下面我们看到english_stem字典:
所以,english_stem字典可以看出, => select to_tsquery('english',to_tsquery('english','Mortgages'); to_tsquery | to_tsquery ------------+------------ 'mortgag' | 'mortgag' 执行摘要:“简单”意味着简单的头脑文字匹配,“英语”适用于(希望)产生更好的匹配.结果将抵押贷款转为抵押贷款,并为您提供了匹配. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sqlserver存储过程_根据表1表2字段对应关系将表1数据去重导
- sql-server-2005 – 在EF Code First和SQL 2005中导致“语法
- SQLSERVER聚集索引与非聚集索引的再次研究(下)
- 第三章——使用系统函数、存储过程和DBCC SQLPERF命令来监控
- 查询语句SqlServer与Excel数据导入导出
- sql-server – SQL Server Management Studio 2012中的SQL查
- sql-server – CTE和临时表有什么区别?
- 在SQL Server中动态地将多行组合到多个列
- sql – LINQ to Entities在DateTime.DayOfWeek上加入
- 深入了解Redis的性能