标签: fuzzy-search

lucene ngram tokenizer 用于模糊短语匹配

我试图通过使用 lucene 来实现模糊短语搜索(以匹配拼写错误的单词),通过参考我想在模糊短语搜索上尝试 ngram 索引的各种博客。

但我找不到 ngram tokenizer 作为我的 lucene3.4 JAR 库的一部分,它是否已被弃用并被其他东西替换?- 目前我正在使用 standardAnalyzer,我在术语的精确匹配方面获得了不错的结果。

我有以下两个要求需要处理。

我的索引有包含短语“xyz abc pqr”的文档,当我提供查询“abc xyz”~5时,我能够获得结果,但我的要求是获得同一文档的结果,即使我有一个额外的单词,如“ abc xyz pqr tst" 在我的查询中(我知道匹配分数会少一些) - 在短语中使用邻近额外单词不起作用,如果我从查询中删除邻近和双引号 " ",我会得到预期的结果(但有我收到许多误报,例如仅包含 xyz、仅 abc 等的文档。)

在上面的例子中,如果有人拼错查询“abc xxz”,我仍然想获得同一文档的结果。

我想尝试一下 ngram,但不确定它是否会按预期工作。

有什么想法吗 ?

lucene solr fuzzy-search

2
推荐指数
1
解决办法
2222
查看次数

Azure SQL Server 中的模糊搜索

在我工作的项目中,我们需要使用某种模糊搜索来填充自动完成字段。当用户在其中输入内容时,此自动完成字段必须显示一些信息。

我正在使用 Azure SQL 数据库,但我发现无法使用主数据服务。( https://learn.microsoft.com/en-us/sql/master-data-services/master-data-services-installation-and-configuration?view=sql-server-2017 )

我已经在谷歌上搜索了一些解决方案,并且找到了与 Levenstein 模糊搜索相关的内容,但我发现的实现不太适合我的场景。

我是模糊搜索方面的新手,请问您能否建议在 T-SQL 中实际实现模糊搜索。

t-sql fuzzy-search azure-sql-database

2
推荐指数
1
解决办法
1436
查看次数

如何使用 ripgrep/fzf 列出匹配搜索的源文件名

问题

我需要搜索文本文件的目录,其中也搜索文件的内容。我目前正在使用 ripgrep 和 fzf 来执行此操作 - 问题是每个文件的每一行都会输出搜索。我需要每个搜索匹配项也指示其源文件名/文件路径。

例子:

我们有以下两个文件:

示例.md

某事 某事 foo 某事

某事 某事 foo 某事

某事 某事 foo 某事

某事 某事 foo 某事

有用的例子.md

某事 某事 foo 某事

我们rg . | fzf在包含它们的目录中运行,写入 foo,并得到以下结果:

有用的示例.md:某事某事foo某事

example.md:某事某事foo某事

example.md:某事某事foo某事

example.md:某事某事foo某事

example.md:某事某事foo某事

这里的问题是 example.md 的每一行都是一个搜索结果。它应该是引用其文件的匹配项。它应该看起来像这样:

有用的示例.md:某事某事foo某事

example.md:某事某事foo某事

…………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………

fuzzy-search fzf

2
推荐指数
1
解决办法
2845
查看次数

检查同一列中是否有类似的字符串

我有一个这样的数据框,

df
col1             col2
 A        'the value is zero'
 B        'this is a cat'
 C        'the value is one'
 D        'nothing is here'
 E        'the colour is blue'
 F        'this is dog'
 G        'empty sequence'
 H        'the colour is red'
 I        'the colour is green'         1
Run Code Online (Sandbox Code Playgroud)

现在我想要类似类型的字符串标记为 1,其他标记为零,所以最终的数据框应该是这样的,

col1             col2                 col1
 A        'the value is zero'           1
 B        'this is a cat'               1
 C        'the value is one'            1
 D        'nothing is here'             0
 E        'the colour is blue'          1 …
Run Code Online (Sandbox Code Playgroud)

python fuzzy-search pandas

2
推荐指数
1
解决办法
1221
查看次数

如何将结果计为"关于xx行"?

我正在寻找的是返回一些行数估计,而不是实际的计数,这可能是一个昂贵的电话.与您在谷歌搜索中看到的类似(... 大约 1.000行).

是否有一些开箱即用的解决方案?如果没有,一般方法是什么?

我正在查询Sql Server 2008数据库.

编辑:澄清一下,结果计数与某些用户查询有关.例如,用户搜索"John",结果应为"大约有1.280.000行与John匹配"

sql sql-server fuzzy-search sql-server-2008

1
推荐指数
1
解决办法
190
查看次数

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

在我的应用程序中,我有一个公司,名称字段为This is a test,由Lucene.Net正确索引.作为参考,我MultiFieldQueryParser的默认运算符设置为QueryParser.Operator.AND.

当我搜索this test~和搜索时,我的搜索过去了this tst~.然而,当我试图寻找我的搜索失败this~ test~,thas~ test~,thas test~,和其他变化.

这个目的是允许用户拼错他们的搜索,所以如果用户搜索Jon Doe它仍然会显示结果John Doe,允许用户不记得他们在数据库中输入的东西的确切拼写.不幸的是,它似乎只允许对搜索短语中的最后一个项进行模糊搜索.我做错了什么,或者我需要使用一个完整的独立分析器才能做到这一点?

lucene lucene.net fuzzy-search

1
推荐指数
1
解决办法
1712
查看次数

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

我正在搜索solr中的"文本"字段,我正在寻找一种方法来匹配(例如)"anamal"和"animal".我的"text"字段的架构如下所示:

            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
            <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" />
            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" />
            <filter class="solr.PorterStemFilterFactory"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.WhitespaceTokenizerFactory" />

            <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
            <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />
            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" />
            <filter class="solr.PorterStemFilterFactory"/>
        </analyzer>
    </fieldType>     
Run Code Online (Sandbox Code Playgroud)

使用SolrNet如何执行模糊搜索以匹配"anamal"和"animal"?

fuzzy-search solrnet

1
推荐指数
1
解决办法
1324
查看次数

如何存储一个关键的多值?

我是客观的新手.我喜欢这样的事情: - 对于每个键,我想存储多个值,如:

2 holds a,b,c
3 holds d,e,f
Run Code Online (Sandbox Code Playgroud)

按下时2 3 or 2 3 3,我希望输出所有这些组合6 values.我应该使用NSMutableDictionary吗?我需要一些建议!

iphone fuzzy-search objective-c nsmutabledictionary ios

1
推荐指数
1
解决办法
5821
查看次数

为什么fuzzywuzzy不考虑字符顺序

考虑这个例子:

>> from fuzzywuzzy import process
>> choices = ['account', 'update', 'query']
>> process.extract('u', choices)
[('account', 90), ('update', 90), ('query', 90)]
Run Code Online (Sandbox Code Playgroud)

在上述情况下,对于我的最终用户来说,帐户排名高于给定字符串的更新是令人困惑的。在这种情况下,由于列表顺序,帐户恰好被任意放置在前面,因为所有比赛都有相同的分数。然而,我本以为update会有更高的分数,因为字符u出现在字符串的前面。

这是一个概念错误还是我在这里没有使用正确的记分器?

python fuzzy-search fuzzywuzzy

1
推荐指数
1
解决办法
2550
查看次数

PowerShell 中的模糊字符串匹配

如何在 PowerShell 脚本中进行模糊字符串匹配?

我从不同的来源抓取了不同的人名,并将它们存储在一个数组中。添加新名称时,我喜欢将名称与现有名称进行比较,如果它们模糊匹配,我喜欢将它们视为相同。例如,使用以下数据集:

@("George Herbert Walker Bush",
  "Barbara Pierce Bush",
  "George Walker Bush",
  "John Ellis (Jeb) Bush"  )
Run Code Online (Sandbox Code Playgroud)

我喜欢从给定的输入中看到以下输出:

"Barbara Bush" -> @("Barbara Pierce Bush")
"George Takei" -> @("")
"George Bush"  -> @("George Herbert Walker Bush","George Walker Bush")
Run Code Online (Sandbox Code Playgroud)

至少,我喜欢看到匹配不区分大小写,并且如果可能的话,也足够灵活以处理一定程度的拼写错误。

据我所知,标准库不提供这样的功能。是否有一个易于安装的模块可以实现这一点?

powershell fuzzy-search

1
推荐指数
1
解决办法
3441
查看次数

sqlalchemy 中的三元组距离运算

我目前正在尝试使用 pg_trgm 操作%<->. 列上的 GIN 索引已经可用,但我找不到与前面提到的运算符等效的 sqlalchemy。

除了编写纯文本查询之外,解决此问题的最佳方法是什么。

一个简单的示例查询是:

tag = test
tag_subq = session.query(sticker_tag.file_id, f'sticker_tag.name <-> {tag}'.label(distance)) \
    .filter(f'sticker_tag.name % {tag}')) \
    .filter('distance' < 0.3) \
    .subquery("tag_subq")
Run Code Online (Sandbox Code Playgroud)

上面的查询显然不起作用,选择和过滤字符串只是占位符来可视化我打算做什么。

python postgresql fuzzy-search sqlalchemy trigram

1
推荐指数
2
解决办法
2562
查看次数

Azure 认知搜索标准 Lucene 分析器通配符和模糊搜索问题

这是 Azure 认知搜索团队的问题。

面临高级搜索功能的严重问题,例如“模糊搜索”和“通配符搜索”。目前在我的索引字段上使用标准 Lucene 分析器。

系统返回搜索查询'终止'的结果,结果包含:终止、终止、终止等。所以结果看起来不错。但是当我尝试搜索 ' *terminat****' (当然使用 queryType=full 参数)时,搜索没有返回任何结果。根据文档,通配符搜索应该返回 * 'terminate'、'termination'、'terminates'*** 和其他以 'terminat*' 开头的术语。

模糊搜索也有同样的问题。如果我搜索“终止〜”,我根本没有得到任何结果。

如果我使用“ Microsoft Analyzer ”,情况似乎会更好。至少模糊搜索和通配符至少返回一些东西......

这是一个错误吗?或者这是预期的行为?可能我误解了文档?

fuzzy-search azure-cognitive-search

1
推荐指数
1
解决办法
170
查看次数

ListJS - 搜索后计算项目

如何在ListJS上的输入字段搜索后计算项目?

我不知道在哪里可以得到它,因为我只是使用基本的例子:

var params = {
  valueNames : ['titleList', 'currentList', 'typeCode', 'categoryCode'],
  plugins: [ ListFuzzySearch() ]
}

var searchSightseeing = new List('sightseeingList', params);
Run Code Online (Sandbox Code Playgroud)

size()oninput我的字段中尝试使用方法,如下所示:

$('#sightseeing-name').on('input', function(){
  console.log(searchSightseeing.size());
})
Run Code Online (Sandbox Code Playgroud)

但它仍然导致所有项目的计数.

javascript fuzzy-search listjs

0
推荐指数
1
解决办法
432
查看次数