<jupyter_start><jupyter_text>全文搜索与模糊搜索Postgresql自带[全文搜索](http://postgres.cn/docs/12/textsearch.html)和[模糊搜索](http://postgres.cn/docs/12/pgtrgm.html)功能,在一定程度上可以替代elasticsearch的角色.> 全文搜索全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置.当用户查询时检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式.这个过程类似于通过字典中的检索字表查字的过程.> 模糊搜索`模糊检索`是与`精准搜索`相反的一个概念.顾名思义是指搜索系统自动按照用户输入关键词的同义词进行模糊检索从而得出较多的检索结果.我们可以简单理解为寻找与搜索词相似的条目.全文搜索与模糊搜索的区别主要在于目的:+ 全文搜索用于返回与词干搜索查询匹配的文档+ 模糊搜索则提供了一种比较两个字符串并确定它们看起来有多相似的方法我们可以大致的认为全文搜索更偏向于描述在没有输入错误时的匹配行为,而模糊搜索则更加偏向描述有输入错误时的匹配行为全文搜索的典型应用是搜索包含关键词的文本,而模糊匹配的典型应用则是在拼写错误时还能搜出结果.<jupyter_code>-- connection: postgres://postgres:postgres@localhost:5433/test
-- autocommit: true
## 全文搜索
create extension pg_jieba;
select * from to_tsquery('jiebacfg', '是拖拉机学院手扶拖拉机专业的。不用多久，我就会升职加薪，当上CEO，走上人生巅峰。');
select * from to_tsvector('jiebacfg', '是拖拉机学院手扶拖拉机专业的。不用多久，我就会升职加薪，当上CEO，走上人生巅峰。');<jupyter_output>1 row(s) returned.
{'fraction_non_alphanumeric': 0.11258278145695365, 'fraction_numerical': 0.009933774834437087, 'mean_word_length': 14.912280701754385, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 6, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '297414', 'license': 'MIT', 'n_tokens_mistral': 682, 'n_tokens_neox': 873, 'n_words': 23, 'path': 'src/数据存储篇/工具介绍/postgresql/功能与特性/特色功能/.ipynb_checkpoints/全文搜索与模糊搜索-checkpoint.ipynb', 'repo_name': 'hsz1273327/TutorialForDataScience', 'size': '906'}