问题标签 [trigram]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 字符串匹配的多列索引+与pg_trgm的字符串相似度?
鉴于此表:
和这样的查询:
我可以像这样创建一个pg_trgm 索引来加快查找速度:
(对?)
我的问题:这样的查询怎么样:
我可以创建一个有助于查找两列的索引吗?
(我知道 trigram 并不是严格意义上的全文,但无论如何我都在标记这个问题)
python - 如何在特定标记之后和之前获取单词?
我目前从事一个项目,该项目只是创建基本的语料库数据库并对文本进行标记。但似乎我陷入了困境。假设我们有这些东西:
现在我想在一个标记之前和之后找到这个词。
我认为会有三种可能性:token 可能开始句子,token 可能结束句子或者 token 可能出现在句子的某个地方,所以我使用了上面的 regex 规则。当我跑步时,我遇到了这些事情:
我也尝试了 \b\w\b 或 \b\W\b 的东西,但不幸的是那些没有返回任何结果而不是返回错误的结果。我试过了:
我希望问题不会太模糊。
postgresql - postgresql 不在 text 列上使用 trigram 索引,但在 varchar 列上使用它
所以基本上我设置了一个非常简单的测试表来测试 postgresql 9.1(库存 Debian 稳定版)中的三元组和全文索引功能。
以下是表和索引定义:
我的问题是,如果我进行%foo%
应该使用 trigram 索引的搜索,如果我在文本列上搜索,它不会:
但是,如果我在 varchar600 列中进行搜索,它确实使用了三元组索引,而且——并不奇怪——要快得多:
所以最终的问题是:
- 为什么 postgres 不在文本列上使用三元组索引。
- 如何使 postgres 使用索引?我应该以其他方式定义它吗?
postgresql - Rails 4 pg_search - 多搜索问题
我正在使用 Rails 的 pg_search gem(Ruby 2.1.1,Rails 4.1.4)并尝试为我的一些模型实现全局多搜索,但我不断得到
PG::UndefinedFunction: ERROR: operator does not exist: text % unknown
当我运行 multisearch 命令时。
这是我的模型:
我的搜索查询是这样的Happy Tiger
但是,当我运行时PgSearch.multisearch("Happy Tiger")
,我得到了上述错误。
我还有一个初始化器告诉 PgSearch 使用trigram
有任何想法吗???
machine-learning - 字符串聚类(使用三元组?)
我有一个字符串列表,我想将其分类。然后我想在每个组的字符串上显示。
假设我的列表如下所示:
- 敏捷的棕色狐狸跳过了懒狗
- 敏捷的棕色狐狸跳过了懒狗!!!!
- 棕狐跳过懒狗
- Zing,矮人运动员 vex 淋巴
- 矮人运动员 vex 淋巴123
- 我很喜欢饼干
然后我想展示这样的东西(每个类一个字符串):
- 敏捷的棕色狐狸跳过了懒狗
- 矮人运动员 vex 淋巴123
- 我很喜欢饼干
我知道三元组是将字符串分类为“相似的字符串”和“不同的字符串”的一种非常简单且有用的解决方案。我也很确定它们可用于将字符串列表划分为类,但我不确定如何。
这里的任何人都可以帮助我,还是我应该使用完全不同的东西?
我更喜欢一种简单且可维护的方法,而不是高精度。
python - 使用 NLTK 查找整个语料库的三元组并打印到 csv 时出现 Unicode 错误
我正在尝试浏览整个文本文件文件夹,收集所有这些文件中三元组的累积频率,并将它们打印到 csv 文件中。它完成了整个语料库的工作,但是当它开始为三元组工作时,我收到以下错误:
非常感谢你。这是脚本:
ruby-on-rails - Rails 中三元组搜索的迁移
我有一个迁移:
它在以下位置生成此代码schema.rb
:
后来,当我执行rake db:schema:load
它时会生成错误的sql:
首先,它说:
错误:数据类型字符变化没有访问方法“gin”的默认运算符类
其次,有失gin_trgm_ops
。
如何使它起作用?
Rails 4.2
performance - 使用 Similarity Postgres 模糊自联接查询提高性能
我正在尝试运行一个查询,该查询将一个表与自身连接起来并进行模糊字符串比较(使用三元组比较)以查找可能的公司名称匹配项。我的目标是返回一条记录的公司名称(ref_name 字段)的三元组相似度与另一条记录的公司名称匹配的记录。目前,我将阈值设置为 0.9,因此它只会带回很可能包含相似字符串的匹配项。
我知道自联接本质上会导致许多比较,但我想尽我所能优化我的查询。我不需要立即得到结果,但目前我正在运行的查询需要 11 个小时才能运行。
我在 Ubuntu 12.04 服务器上运行 Postgres 9.2。我不知道 ref_name 字段(我匹配的字段)的最大长度是多少,所以我将它设置为varchar(300)
. 我想知道将其设置为文本类型是否会影响性能,或者是否有更好的字段类型可用于提高性能。我的LC_CTYPE
和LC_COLLATE
语言环境设置为"en_US.UTF-8"
我正在运行查询的表总共包含大约 160 万条记录,但我需要 11 个小时才能运行的查询是其中的一小部分(大约 100k)。
表结构:
索引:
询问:
解释计划:
以下是一些示例记录:
正如你所看到的,我创建了一个 gist trigram 索引来加快速度(到目前为止尝试了两种不同的类型进行比较)。有人对我如何提高此查询的性能并将其从 11 小时缩短到更易于管理的时间有任何建议吗?最终我想在整个表上运行这个查询来比较记录,而不仅仅是这个小子集。
ruby-on-rails-4 - pg_search 子字符串的电子邮件地址
我正在使用 pg_search 来 full_text_search 我的客户 d/b 的姓名和电子邮件地址。如果我搜索电子邮件地址的域部分,如何获得匹配?例如hotmail,返回所有带有hotmail 地址的客户。
到目前为止,我采取的步骤包括使用 trigram 搜索和为 trigram 搜索添加 psql 扩展。本文中的评论,PG full text search on rails using pg_search gem for substring表明我需要构建一个文本搜索字典。有人知道如何拆分电子邮件地址吗?
postgresql - 如何在 PostgreSQL 中执行三元组搜索之前指定条件?
我对 PostgreSQL 中的模糊搜索和三元组相当陌生。我在数据库中有几十万个产品,我希望能够选择名称最接近另一个产品名称的产品。
经过几个小时的试验和研究,我安装了pg_trgm
扩展并创建了一个三元索引,如下所示:
以下查询在大约 0.07 秒内执行,目前令人满意:
问题是,我需要进一步指定要搜索的产品类型。我想如果我这样做,它会比以前更快,因为我不是模糊搜索整个数据库,而是只搜索一组特定的产品。但是,由于某种原因,如果我执行以下操作:
...执行时间大约翻了一番。谁能解释为什么会这样?另外,如果您在这方面有经验,您会建议不要使用 PostgreSQL 并使用 Elastic 吗?