问题标签 [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 投票
3 回答
196 浏览

python - 在python中识别字符串中的子字符串的最有效方法?

我需要在相当长的字符串中搜索 CPV(通用采购词汇)代码。

目前我正在用一个简单的 for 循环和 str.find()

问题是,如果 CPV 代码以稍微不同的格式列出,该算法将找不到它。

在字符串中搜索代码的所有不同迭代的最有效方法是什么?这仅仅是重新格式化多达 10,000 个 CPV 代码并为每个实例使用 str.find() 的情况吗?

不同格式的示例如下

等等

谢谢 :)

0 投票
2 回答
440 浏览

lucene - 使用java中的数据对象在数据库中存储lucene索引

这可能吗?我不能直接访问数据库——只能通过数据对象。如果项目以 ArrayList 之类的形式返回,我是否能够搜索索引?

如果这不可能,有什么方法可以使用 Lucene(或其他工具)对使用 java 的对象进行模糊匹配?

例如,我有一个包含 FirstName 和 LastName 的 Person 对象。我想对名称进行模糊匹配。所以,假设我有一个 x 数量的 Person 对象数组,是否有一种有效的方法来遍历每个 Person 对象并比较名称?

0 投票
1 回答
4292 浏览

java - Android & 模糊匹配、n-gram 和 Levenshtein 距离

我正在构建一个 Android 应用程序,它接受一个字符串输入并使用 Google API 返回一个排序的书籍列表。

我正在寻找一种方法来比较用户输入的开放式字符串与列表中的第一项,以查看他们输入的内容是否“可能”是一本书。我有大量关于这本书、书名、作者、描述等的信息,所以我可以搜索任何部分。

一个例子是:

解决此问题的最佳方法是什么?我已经查看了 levenshtein 距离,但认为它不适用于这种开放式输入,n-gram 似乎是一个很好的方法,或者模糊匹配。

还有其他想法吗?

0 投票
4 回答
901 浏览

python - 这个字符串匹配方法在python中有没有实现?

我正在尝试使用近似字符串匹配来确定我的数据存储中的哪些条目几乎是重复的。

在python中是否有以下方法的实现,或者我需要尝试自己动手?

谢谢 :)

来自维基百科

...

蛮力方法是计算 T 的所有子串到 P 的编辑距离,然后选择具有最小距离的子串。但是,该算法的运行时间为 O(n3 m)

一个更好的解决方案[3][4],利用动态规划,使用问题的另一种表述:对于文本 T 中的每个位置 j 和模式 P 中的每个位置 i,计算第 i 个字符之间的最小编辑距离模式 Pi 和 T 的任何子串 Tj',j 在位置 j 处结束。

将其应用于许多字符串的最有效方法是什么?

0 投票
5 回答
9310 浏览

search - 使用 Apache Solr 搜索名称

我刚刚冒险进入看似简单但极其复杂的搜索世界。对于一个应用程序,我需要构建一个搜索机制来通过用户的名字搜索用户。

在阅读了许多帖子和文章后,包括:

如何使用 Lucene 进行个人姓名(名字、姓氏)搜索?
http://dublincore.org/documents/1998/02/03/name-representation/
通过优先考虑用户关系来搜索社交网络的最佳方式是什么?
http://www.gossamer-threads.com/lists/lucene/java-user/120417
Lucene 索引和查询设计问题 - 搜索人员
Lucene 模糊搜索客户名称和部分地址

...以及其他一些我目前找不到的。并且至少在我的机器上进行索引和基本搜索,我为用户搜索设计了以下方案:

1) 具有第一、第二和第三名称字段,并使用 Solr 对它们进行索引
2) 使用 edismax 作为多列搜索的 requestParser
3) 使用归一化过滤器的组合,例如:音译、拉丁语到 ascii 转换等
4 ) 最后使用模糊搜索

显然,我对此非常陌生,我不确定上述方法是否是最好的方法,并且希望听到有经验的用户在这个领域比我有更好的想法。

我需要能够通过以下方式匹配名称:

1) 重音折叠:Jorn 匹配 Jörn,反之亦然
2) 替代拼写:Karl 匹配 Carl,反之亦然
3) 缩短表示(我相信我使用 SynonymFilterFactory 这样做):Sue 匹配 Susanne 等
4) Levenstein 匹配:Jonn 匹配John 等
5) Soundex 匹配:Elin 和 Ellen

非常欢迎任何指导、批评或评论。请让我知道这是否可能……或者我只是在做白日梦。:)


编辑

我还必须补充一点,我还有一个全名字段,以防某些人的名字很长,例如其中一篇文章:Jon Paul 或 Del Carmen 也应该匹配 Jon Paul Del Carmen

由于这是一个新项目,我可以以任何我认为合适的方式修改架构和架构,因此限制非常有限。

0 投票
1 回答
1031 浏览

search - 搜索数字字段

在 Lucene 中,我想在数字字段上构建一个“模糊”查询。目前我发现的只是用于搜索数字字段的NumericRangeQuery类。在我正在构建的应用程序中,用户将指定一组类型以及他希望在特定集合中出现的此类对象的数量。例如,用户可以查询“4勺13叉1刀”。

我需要一个查询,根据所需金额和实际金额的距离对每个数字字段进行评分。例如, score = (distance + 1)^-1 应该会产生很好的结果。有没有一种简单、有效的方法来做到这一点?

0 投票
3 回答
2378 浏览

java - Java中的模糊字符串搜索,包括单词交换

我是一名 Java 初学者,正在尝试编写一个将输入与预定义字符串列表匹配的程序。我看过 Levenshtein 距离,但我遇到了这样的问题:

如果我有诸如“牛肉片”之类的输入,我希望它与“牛肉片”相匹配。问题在于,根据 Levenshtein 距离,“牛肉片”更接近于“金枪鱼片”之类的东西,这当然是错误的。

我应该为此使用像 Lucene 这样的东西吗?是否有人在 Java 类中使用 Lucene 方法?

谢谢!

0 投票
2 回答
2352 浏览

django - PostgreSQL 和 Django 中的不精确全文搜索

我是 PostgreSQL 新手,我不确定如何进行不精确的全文搜索。并不是说它太重要了,但我正在使用 Django。换句话说,我正在寻找类似以下的内容:

我的条目列表应该包含“hello world”或类似的内容。然后应根据它们的值与指定字符串的距离对列表进行排序。例如,我希望查询包含包含“Hello World”、“hEllo world”、“helloworld”、“hell world”等的条目,并通过某种排名指示每个项目与完美之间的距离,未更改的查询字符串。

你会怎么做呢?

0 投票
1 回答
5010 浏览

java - 如何获取 Lucene 模糊搜索结果的匹配项?

使用 Lucene Fuzzy Search 时如何获得匹配的模糊项及其偏移量?

模糊搜索工作正常。如果文档包含术语“fuzzy”或“luzzy”,则匹配。如何获得匹配的术语以及它们的偏移量是多少?

我确保所有 CONTENT_FIELD 都添加了 termVectorStored 以及 position 和 offsets 。

0 投票
1 回答
1487 浏览

mysql - 使用 mysql 的匹配对地址进行模糊匹配(如果可能,使用权重以获得更好的结果排名)

我有一个带有FULLTEXT索引的 myISAM 表,正在尝试做

我得到结果,但只有那些在里面得到“伦敦”这个词的人,或者那些在里面得到“街道”这个词的人。我知道 3 个ft_min_word_len字符的单词没有被索引,所以 "235","w1b","2et" 被忽略了,但是 "regent" 呢?这样做的标准方法是什么?模糊匹配地址。谢谢