问题标签 [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 回答
654 浏览

lucene - 如何对 Lucene.net 搜索中提供的所有单词执行模糊搜索

我正在尝试自学 Lucene.Net 在我的网站上实施。除了一个问题,我知道如何做几乎所有我需要的事情。我试图弄清楚如何允许对搜索字符串中的所有搜索词进行模糊搜索。

因此,例如,如果我有一个带有 string 的文档The big red fox,我会尝试bag fix匹配它。

问题是,似乎为了执行模糊搜索,我必须~在用户输入的每个搜索词中添加。我不确定解决此问题的最佳方法。现在我正在尝试这个

第一次替换是由于 Lucene.Net 如果搜索字符串已经抛出异常~,显然它无法~~在短语中处理。这种方法有效,但如果我开始添加模糊权重值,它似乎会变得混乱。

有没有更好的方法来默认所有单词以允许模糊?

0 投票
1 回答
1733 浏览

lucene - 对搜索查询中的多个词执行模糊搜索时,为什么我的 Lucene.net 搜索失败?

在我的应用程序中,我有一个公司,名称字段为This is a test,Lucene.Net 正确地对其进行了索引。作为参考, myMultiFieldQueryParser将其默认运算符设置为QueryParser.Operator.AND.

当我搜索this test~and时,我的搜索通过了this tst~。但是,当我尝试搜索this~ test~thas~ test~thas test~和其他变体时,我的搜索失败。

整个目的是允许用户在搜索时拼写错误,因此如果用户搜索Jon Doe它仍会显示 的结果John Doe,从而使用户不记得他们在数据库中输入的内容的确切拼写。不幸的是,它似乎只允许对搜索短语中的最后一个词进行模糊搜索。我做错了什么,还是我需要使用整个单独的分析器才能做到这一点?

0 投票
2 回答
4827 浏览

c# - 在 C# 中快速动态模糊搜索超过 10 万个字符串

假设它们是预先加载的股票代码,输入到文本框中。我正在寻找可以复制的代码,而不是要安装的库。

这是受到这个问题的启发:

是否有任何为 C# 编写的模糊搜索或字符串相似函数库?

Levenstein 距离算法似乎运行良好,但计算需要时间。当用户输入额外的字母时,查询需要重新运行这一事实是否有任何优化?我有兴趣最多显示每个输入的前 10 个匹配项。

0 投票
5 回答
12836 浏览

ruby - 如何在 Ruby 中进行模糊子字符串匹配?

我发现了很多关于模糊匹配的链接,将一个字符串与另一个字符串进行比较,看看哪个获得了最高的相似度分数。

我有一个很长的字符串,它是一个文档和一个子字符串。子字符串来自原始文档,但经过多次转换,因此可能引入了奇怪的伪影,例如这里的空格,那里的破折号。子字符串将匹配原始文档中的一段文本 99% 或更多。我不匹配以查看该字符串来自哪个文档,我正在尝试在文档中查找该字符串开始的索引。

如果字符串是相同的,因为没有引入随机错误,我会使用document.index(substring),但是如果只有一个字符差异,这将失败。

我认为差异可以通过删除字符串和子字符串中除 az 之外的所有字符来解决,比较,然后使用我在压缩字符串时生成的索引将压缩字符串中的索引转换为真实文档中的索引. 这在空格和标点符号不同的情况下效果很好,但只要一个字母不同,它就会失败。

文档通常是几页到一百页,子串从几句话到几页。

0 投票
2 回答
1719 浏览

c# - 为什么这个 Lucene.Net 查询失败?

我正在尝试转换我的搜索功能以允许涉及多个单词的模糊搜索。我现有的搜索代码如下所示:

这可以正常工作,如果我有一个名称字段为“我的名字是 Andrew”的实体,并且我执行搜索“Andrew Name”,Lucene 会正确找到正确的文档。现在我想启用模糊搜索,以便正确找到“Anderw Name”。我更改了方法以使用以下代码:

不幸的是,使用此代码,如果我提交搜索查询“Andrew Name”(与以前相同),我得到的结果为零。

核心思想是所有术语必须至少在一个文档字段中找到,但每个术语可以驻留在不同的字段中。有谁知道为什么我重写的查询失败了?


最终编辑:好吧,事实证明我把这个复杂化了很多,而且没有必要改变我的第一种方法。恢复到第一个代码片段后,我通过更改启用了模糊搜索

0 投票
1 回答
803 浏览

lucene - Solr 服务器端查询-预处理

我希望 solr 进行模糊搜索,并将查询作为子词查找。应优先匹配完整的单词。

这适用于以下查询:

http://localhost:8983/solr/select?qt=my_qt&q=*myword*~0.8+myword~0.8 �</p>

是否有可能摆脱请求中的所有通配符和模糊参数。

我很想以一种方式配置 solr,以便在收到以下查询时执行与上述查询相同的搜索:

我想在 solrconf.xml 中的 reqeustHandler 中添加如下内容

(这不起作用)

0 投票
1 回答
262 浏览

iphone - 什么是解析词典并使用通配符显示大量匹配项的最佳方法

我的问题是,我的词典大约有 200,000 字左右。该文件大小为 1.8mbs。我想要来自用户的输入,比如 **id,并且我想要显示所有可能的匹配项,其中 * 可以是任何字母 AZ。(说,女仆等)

我正在寻找有关最有效方法的一些建议,因为我希望用户能够添加更具体的字母并实时更新单词匹配。

我的想法是尝试使用 RegexKitLite,但我感觉会非常慢。

感谢您的任何意见!

编辑:您认为可以使用 NSPredicates 来实现这一目标吗?

0 投票
2 回答
3465 浏览

algorithm - 英语句子与数据库中存储的一组英语句子的模糊匹配

一个数据库表中大约有 1000 条记录。有一个名为的列title,用于存储文章的标题。在插入记录之前,我需要检查该表中是否已经存在具有相似标题的文章。如果是这样,我会跳过。

执行这种模糊匹配的最快方法是什么?假设句子中的所有单词都可以在英语词典中找到。如果句子 #1 中 70% 的单词可以在句子 #2 中找到,我们认为它们是匹配的。理想情况下,该算法可以为每个句子预先计算一个值,以便将该值存储在数据库中。

0 投票
1 回答
1464 浏览

ruby-on-rails - 轻量级 Rails 搜索引擎

我正在寻找一个轻量级的 Rails 搜索引擎。这并不意味着进行全文搜索或任何事情,我正在做一个简单的自动完成文本框。基本上,给定一个字符串,我需要它来搜索表中的两个字符串列并返回最相关的结果。

我考虑过自己做搜索算法,使用很多 SQL LIKE 语句等,但是当你谈论加权条目以及如果缺少一个单词会发生什么时,它会变得有点混乱。模糊搜索也不错。我试图做一些谷歌搜索,但它主要给了我一些东西(我认为)是矫枉过正的,比如狮身人面像。

您对可以执行我所描述的简单搜索引擎有什么建议吗?或者使定制引擎总是更好。

谢谢!

PS我认为注意我正在自动完成书名和作者可能会有所帮助,因此用户对他们应该在搜索字段中输入的内容有一个很好的了解。

0 投票
1 回答
1573 浏览

mysql - MySQL 中的字符串排序算法,如 Quicksilver

mySQL中的字符串排序算法

Quicksilver 评分算法

PHP 端口
Javascript 端口
MySql 端口(哦,没有链接)这是我的问题 继续阅读

示例用法:

好的,所以我的问题就在这里。就像这些一样棒,感谢那些使之成为可能的人!我很想用 mysql 的方式来做这件事。数据库不是我的专业领域,但如果我只想在 MySQL 中做到这一点,我该怎么做?我应该,有更好的方法吗?.

我对此的想法是这样的。

现实生活中的例子:

我的数据库中有 14000 多条记录。“ ICD9 ”医疗代码表,其中包含医疗代码和描述。

表:
ICD9_codes

字段:
代码
code_text

我正在对 php 函数进行 jQuery ajax 调用。

这行得通,没关系。但我真正的心愿是使用评分算法

如果我错了,请纠正我,我很可能是这样,如果你这样做,我会感到震惊:)

我认为搜索 14000 多条记录是一个非常昂贵的过程。(即使最小值为 2 个字符)使用 jQuery 自动完成。(这可能不太适合某些人,因为就像我说的“数据库不是我的专业领域”)

所以这就是我想知道的。是否值得花时间了解 MySQL 并获得相当于

如果您对这个想法有任何优点或缺点很想听听?或知道更好的方法:)

优点:

  • MySQL拥有搜索算法的原生方式

缺点:

  • 如果我无法控制数据库,我将无法添加 mysql 函数 score() (这会让我在phpjavascript中执行此操作)

这时候会溜进去(Stackoverflow 很棒!!!很棒的社区!)谢谢,达斯汀