问题标签 [fuzzy-search]

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.

0 投票
1 回答
1292 浏览

algorithm - 如何用不关心的模式匹配解决二维匹配问题?

我想我理解 Fischer & Paterson 算法与此处显示的“无关”模式匹配:http: //u.cs.biu.ac.il/~amir/AlgII/fp-set1.html

但是,据我了解,可以使用“不关心”一维匹配来解决 O((n^2)(logm)) 时间内的二维匹配。为此,应该在每个字符串的末尾或类似的东西后面附加一个“不关心”符号,并将其转换为一维问题。那是我不太明白的部分。我做了一些尝试,但我看不出这有什么帮助。

那么,带有“不关心”的一维匹配如何帮助解决二维匹配?

谢谢。

编辑:我想我有点明白了。文本需要线性化(其行的串联)。模式也是如此,但在每一行之后,应该添加 nm 无关符号(模式的最后一行除外)。然而,我认为这需要 O((n^2)(log(m^2))) 时间,我认为前面提到的时间是不可能的。评论?

0 投票
1 回答
488 浏览

algorithm - 在模糊@username 上查找用户匹配的算法

我确定我在 Meta 或 SO 上看到了一篇帖子,其中 Jeff 发布了更好地匹配评论的升级算法,例如当有人输入评论时:

它将匹配用户名“Tom”。如果有特殊字符,请说我的用户名是“T0m”并且有人键入@Tom它仍然匹配。

如果它确实存在,有人有这个帖子的链接吗?如果我没记错的话,那是他分享的代码,对我很有用!

否则,给出参与讨论的用户名列表:

并且您被给出@Aaron@Aron作为输入,选择列表中提到的正确用户的最佳方法是什么?

一个通用的算法会很好,但我正在做的网站是 ASP.net c#,所以如果有一个使用该语言的示例,那就太好了。这是我到目前为止所拥有的,它非常适合精确匹配(全小写):

0 投票
1 回答
1147 浏览

lucene - Solr/lucene 中用于模糊匹配的最大字符数

我正在尝试用 Solr 进行模糊匹配。

在我的文档索引 first_name 字段中,我提到了“MYNEWORGANIZATION20SEP2011” - 实际上这个词是“我的新组织 20-Sep-2011”,但我删除了空格和其他字符。

现在如果我直接搜索为查询“MYNEWORGANIZATION20SEP2011”Solr 会在上面的单词(不带空格)上得到 1 个结果,如上面的文档 ID,完美!

但是,如果我从这个字符串中修剪两个字符并查询我是否提供“MYNEWORGNIZATION20SEP20~0.8”,我会得到 0 个结果。

对于我的新查询 MYNEWORGNIZATION20SEP20 与主文档数据的距离为 2 - 因此 % 匹配应该 > 90% 匹配,因此它仍然应该搜索数据(在我的查询中,我指定只有 80% 匹配。

顺便说一句,如果我将 first_name 用作“rushik”等 6-7 个字符并提供“rushik~0.75”之类的模糊查询,则搜索工作正常并返回数据。

在上述两种情况下,我都将字段类型用作“text_general” - 使用 solr 3.3。

Solr 中的模糊搜索是否有任何字符限制,或者它可以在任何地方进行配置?- 我正在使用默认的 solr 配置,没有更改 solrconfig.xml 中的任何内容

有没有更好的方法来搜索“我的新组织 2011 年 9 月 20 日”之类的带有模糊查询的字符串,而无需手动删除空格。

谢谢,拉希克。

0 投票
1 回答
799 浏览

visual-studio - 为什么我可以从 Visual Studio 运行 SSIS 模糊分组,但不能从部署的包运行?

我编写了一个 SSIS 包来创建模糊分组。我可以从针对我的任何服务器的 Visual Studio 运行它,它会毫无问题地运行。如果我尝试通过远程连接到任何这些服务器来运行 dtsx,则在执行模糊分组组件时会收到 PRODUCTLEVELTOLOW 错误。

我在所有服务器上运行 SQL Server 2005 Standard。我读过 SQL Server 2005 Enterprise 是使用模糊分组和其他一些组件所必需的。这符合错误消息,但如果这是真的,为什么它可以在 Visual Studio 中工作?

谢谢你。

编辑:还有其他方法可以创建模糊分组吗?也许有 SSIS 组件经验的人会说是否可以选择创建类似的组件?

0 投票
2 回答
43125 浏览

sql - 如何仅使用 PostgreSQL 创建简单的模糊搜索?

我在基于 RoR 的网站上的搜索功能有点问题。我有很多带有一些代码的产品。此代码可以是任何字符串,例如“AB-123-lHdfj”。现在我使用ILIKE运算符来查找产品:

它工作正常,但找不到带有“AB123-lHdfj”或“AB123lHdfj”等代码的产品。

我该怎么办?可能是 Postgres 有一些字符串规范化功能,或者其他一些可以帮助我的方法?

0 投票
3 回答
548 浏览

python - 数据库中的近似搜索

我有一个包含机构列表(大学、医院等)的大型数据库。机构的名称来自不同的来源,同一机构的拼写可能不同。例如,它们可能拼写错误,或者单词可能被缩短(“uni”、“univ”或“university”)

给定一个我需要插入数据库的名称,是否有一种实用的方法来查找该机构是否已经在数据库中?这不是一个研究项目,所以我正在寻找一个相当快的解决方案。

我正在使用 django 和 postgresql,但我想这并不重要。

0 投票
4 回答
511 浏览

sql - 使用非精确测量找到一系列数据(模糊逻辑)

这是一个更复杂的后续问题:查找顺序值的有效方法

每个产品可以有许多细分行(数千)。每个段都有每个产品从 1 开始的位置列(1、2、3、4、5 等)和一个可以包含任何值的列,例如(323.113、5423.231、873.42、422.64、763.1 等)。 )。数据是只读的。

将产品视为一首歌曲,将片段视为歌曲中的一组音符可能会有所帮助。

给定一个连续片段的子集,比如一首歌的片段,我想确定产品的潜在匹配。然而,由于测量中的潜在错误,子集中的段可能与数据库中的段完全匹配。

如何通过查找与我测量的细分子集最匹配的产品细分来识别候选产品?此外,数据库是此类数据的最佳媒介吗?

-

这里只是关于我将如何解决这个问题的一些想法。请不要将这些作为确切的要求。我对任何类型的算法都持开放态度,以使这项工作尽可能好。我在想需要有多个阈值变量来确定接近度。一种可能性可能是实现接近阈值和匹配阈值。

例如,给定这些值:

如果接近阈值允许测量的段高于或低于实际段 1,则测量 1 可能与产品 A 匹配,因为尽管许多段不完全匹配但它们在相对于实际值的接近阈值之内。

如果匹配阈值允许具有 3 个或更多匹配的测量,则测量 2 可能会返回产品 A,因为尽管其中一个段 (78) 远远超过邻近阈值,但它仍然以正确的顺序匹配 3 个段,因此在匹配阈值。

测量 3 与产品 A 不匹配,因为尽管所有测量的段都存在于实际段中,但它们不在邻近或匹配阈值内。

更新:其中一个答案要求我定义最接近匹配的意思。我不完全确定如何回答这个问题,但我会尝试通过继续歌曲类比来解释。假设这些片段代表录制歌曲的最大频率。如果我再次录制同一首歌曲,它会很相似,但由于背景噪音和其他录音设备的限制,一些频率会匹配,一些会接近,还有一些会相差甚远。在这种情况下,您将如何定义一个记录何时“匹配”另一个?这与我正在寻找在此问题中使用的相同类型的匹配逻辑。

0 投票
2 回答
42623 浏览

c# - 模糊文本匹配 C#

我正在编写一个桌面 UI(.Net WinForms)来帮助摄影师清理他的图像元数据。有一个 66k+ 短语的列表。任何人都可以推荐一个好的开源/免费 .NET 组件,我可以使用它使用某种算法来识别潜在的合并候选者吗?例如,可能有两个或多个条目实际上是相同的单词或短语,只是空格或标点符号或什至是轻微的拼写错误。该应用程序最终将依靠用户来整合短语,但拥有一种自动找到潜在候选人的有效方法将被证明是无价的。

0 投票
2 回答
1504 浏览

solrnet - SolrNet:如何在 SolrNet 中执行模糊搜索?

我正在 solr 中搜索“文本”字段,并且正在寻找一种将“anamal”与“animal”匹配(例如)的方法。我的“文本”字段架构如下所示:

使用 SolrNet 如何执行模糊搜索以将“anamal”与“animal”匹配?

0 投票
1 回答
201 浏览

sql - 数据集上的模糊索引

我面临一个问题,我需要提供一个搜索功能,用户可以提供“他/她知道的尽可能多的信息”。然后应该将此数据集与不同的查找表进行匹配,以确定我是否可以可靠地将其与我们的本地 id 之一相关联。例如,如果我们有此搜索查询的记录。大多数字段都是模糊的。

示例: 一个字段可以是名称(用户只有名字)和另一个街道,用户只有街道号。

数据集大小适中(约 10M 个条目)。

解决这个问题的最佳方法是什么?SQL + soundex?卢森?

谢谢!