我试图通过使用 lucene 来实现模糊短语搜索(以匹配拼写错误的单词),通过参考我想在模糊短语搜索上尝试 ngram 索引的各种博客。
但我找不到 ngram tokenizer 作为我的 lucene3.4 JAR 库的一部分,它是否已被弃用并被其他东西替换?- 目前我正在使用 standardAnalyzer,我在术语的精确匹配方面获得了不错的结果。
我有以下两个要求需要处理。
我的索引有包含短语“xyz abc pqr”的文档,当我提供查询“abc xyz”~5时,我能够获得结果,但我的要求是获得同一文档的结果,即使我有一个额外的单词,如“ abc xyz pqr tst" 在我的查询中(我知道匹配分数会少一些) - 在短语中使用邻近额外单词不起作用,如果我从查询中删除邻近和双引号 " ",我会得到预期的结果(但有我收到许多误报,例如仅包含 xyz、仅 abc 等的文档。)
在上面的例子中,如果有人拼错查询“abc xxz”,我仍然想获得同一文档的结果。
我想尝试一下 ngram,但不确定它是否会按预期工作。
有什么想法吗 ?
在我工作的项目中,我们需要使用某种模糊搜索来填充自动完成字段。当用户在其中输入内容时,此自动完成字段必须显示一些信息。
我正在使用 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 中实际实现模糊搜索。
我需要搜索文本文件的目录,其中也搜索文件的内容。我目前正在使用 ripgrep 和 fzf 来执行此操作 - 问题是每个文件的每一行都会输出搜索。我需要每个搜索匹配项也指示其源文件名/文件路径。
我们有以下两个文件:
某事 某事 foo 某事
某事 某事 foo 某事
某事 某事 foo 某事
某事 某事 foo 某事
某事 某事 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某事
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………
我有一个这样的数据框,
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) 我正在寻找的是返回一些行数估计,而不是实际的计数,这可能是一个昂贵的电话.与您在谷歌搜索中看到的类似(... 大约 1.000行).
是否有一些开箱即用的解决方案?如果没有,一般方法是什么?
我正在查询Sql Server 2008数据库.
编辑:澄清一下,结果计数与某些用户查询有关.例如,用户搜索"John",结果应为"大约有1.280.000行与John匹配"
在我的应用程序中,我有一个公司,名称字段为This is a test,由Lucene.Net正确索引.作为参考,我MultiFieldQueryParser的默认运算符设置为QueryParser.Operator.AND.
当我搜索this test~和搜索时,我的搜索过去了this tst~.然而,当我试图寻找我的搜索失败this~ test~,thas~ test~,thas test~,和其他变化.
这个目的是允许用户拼错他们的搜索,所以如果用户搜索Jon Doe它仍然会显示结果John Doe,允许用户不记得他们在数据库中输入的东西的确切拼写.不幸的是,它似乎只允许对搜索短语中的最后一个项进行模糊搜索.我做错了什么,或者我需要使用一个完整的独立分析器才能做到这一点?
我正在搜索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"?
我是客观的新手.我喜欢这样的事情: - 对于每个键,我想存储多个值,如:
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吗?我需要一些建议!
考虑这个例子:
>> 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出现在字符串的前面。
这是一个概念错误还是我在这里没有使用正确的记分器?
如何在 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)
至少,我喜欢看到匹配不区分大小写,并且如果可能的话,也足够灵活以处理一定程度的拼写错误。
据我所知,标准库不提供这样的功能。是否有一个易于安装的模块可以实现这一点?
我目前正在尝试使用 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)
上面的查询显然不起作用,选择和过滤字符串只是占位符来可视化我打算做什么。
这是 Azure 认知搜索团队的问题。
面临高级搜索功能的严重问题,例如“模糊搜索”和“通配符搜索”。目前在我的索引字段上使用标准 Lucene 分析器。
系统返回搜索查询'终止'的结果,结果包含:终止、终止、终止等。所以结果看起来不错。但是当我尝试搜索 ' *terminat****' (当然使用 queryType=full 参数)时,搜索没有返回任何结果。根据文档,通配符搜索应该返回 * 'terminate'、'termination'、'terminates'*** 和其他以 'terminat*' 开头的术语。
模糊搜索也有同样的问题。如果我搜索“终止〜”,我根本没有得到任何结果。
如果我使用“ Microsoft Analyzer ”,情况似乎会更好。至少模糊搜索和通配符至少返回一些东西......
这是一个错误吗?或者这是预期的行为?可能我误解了文档?
如何在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)
但它仍然导致所有项目的计数.
fuzzy-search ×13
python ×3
lucene ×2
fuzzywuzzy ×1
fzf ×1
ios ×1
iphone ×1
javascript ×1
listjs ×1
lucene.net ×1
objective-c ×1
pandas ×1
postgresql ×1
powershell ×1
solr ×1
solrnet ×1
sql ×1
sql-server ×1
sqlalchemy ×1
t-sql ×1
trigram ×1