我现在正在使用django-haystack和apache-solr作为后端.
问题是我无法让应用程序执行我正在寻找的搜索功能
搜索单词中的子部分
例如.搜索"buntu"不会给我"ubuntu"
寻找类似的单词
例如.搜索"ubantu"会给"ubuntu"
任何帮助将非常感谢.
我正在使用Elasticsearch在数据库中搜索名称,并且希望它模糊以允许出现较小的拼写错误。根据我在此问题上找到的建议,我使用“匹配”和“模糊性”而不是“模糊性”,这似乎更加准确。这是我的查询:
{ "query":
{ "match":
{ "last_name":
{ "query": "Beach",
"type": "phrase",
"fuzziness": 2
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,即使我使用last_name“ Beach”获得了很多结果(我知道至少有100个),但在查询返回的前10个匹配中,我也获得了last_name“ Beech”和“ Berch”的结果。有人可以帮助我先弄清楚确切的匹配方法吗?
我有一个要在过滤时搜索的人员列表。每次用户输入搜索字符串时,都会应用过滤。
有两个挑战需要考虑:
第一个是通过搜索子字符串来解决的,例如 String.Contains()。第二个可以通过使用模糊实现来解决(例如https://fuzzystring.codeplex.com)
但我不知道如何同时应对这两个挑战。
例如:我想在输入以下内容之一时找到“Dr. Martin Fowler”:
我想我需要编写一个“FuzzyContains()”逻辑来处理我的需求并且还具有可接受的性能。任何建议如何开始?
所以我有一个字符串列表如下:
list = ["I love cat", "I love dog", "I love fish", "I hate banana", "I hate apple", "I hate orange"]
Run Code Online (Sandbox Code Playgroud)
如何在没有给定关键字的情况下遍历列表并对部分匹配的字符串进行分组。结果应如下所示:
list 1 = [["I love cat","I love dog","I love fish"],["I hate banana","I hate apple","I hate orange"]]
Run Code Online (Sandbox Code Playgroud)
非常感谢。
我得到的结果模糊不清,效果不理想。如果中间有多余的单词,则由于levenshtein的差异,分数会更低。
例:
from fuzzywuzzy import fuzz
score = fuzz.ratio('DANIEL CARTWRIGHT', 'DANIEL WILLIAM CARTWRIGHT')
print(score)
score = fuzz.ratio('DANIEL CARTWRIGHT', 'DAVID CARTWRIGHT')
print(score)
score = fuzz.partial_ratio('DANIEL CARTWRIGHT', 'DANIEL WILLIAM CARTWRIGHT')
print(score)
score = fuzz.partial_ratio('DANIEL CARTWRIGHT', 'DAVID CARTWRIGHT')
print(score)
Run Code Online (Sandbox Code Playgroud)
结果:81 85 71 81
我正在寻找第一对(丹尼尔vs丹尼尔·威廉姆)比第二对(丹尼尔vs大卫)更好的比赛。
有没有比Fuzzywuzzy更好的方法?
我想知道是否有某种方法可以在PHP中进行模糊字符串匹配.寻找一个长字符串中的单词,找到一个潜在的匹配,即使它拼写错误; 如果由于OCR错误而被一个字符关闭的东西会找到它.
我在想一个正则表达式生成器可能能够做到这一点.因此,如果输入"疯狂",它将生成此正则表达式:
.*((crazy)|(.+razy)|(c.+azy)|cr.+zy)|(cra.+y)|(craz.+)).*
Run Code Online (Sandbox Code Playgroud)
然后它将返回该单词的所有匹配或该单词的变体.
如何构建生成器: 我可能会将搜索字符串/单词拆分为一个字符数组,并构建正则表达式,将新创建的数组替换为键值(字符串中字母的位置). +".
这是进行模糊文本搜索的好方法还是有更好的方法?怎么样的字符串比较,根据它的接近程度给我一个分数?我试图看看一些转换不良的OCR文本是否包含一个单词.
在使用Lucene模糊搜索时,如何获得匹配的模糊项及其偏移量?
IndexSearcher mem = ....(some standard code)
QueryParser parser = new QueryParser(Version.LUCENE_30, CONTENT_FIELD, analyzer);
TopDocs topDocs = mem.search(parser.parse("wuzzy~"), 1);
// the ~ triggers the fuzzy search as per "Lucene In Action"
Run Code Online (Sandbox Code Playgroud)
模糊搜索工作正常.如果文档包含术语"模糊"或"luzzy",则匹配.如何获得匹配的术语以及它们的偏移量是多少?
我确保所有CONTENT_FIELD都添加了termVectorStored和位置和偏移量.
我正在使用django-rosetta翻译.我有一个非常基本的问题 - 什么是模糊字符串?什么是模糊的实际应用?
我想使用Lucene来索引/搜索文本.文本可能包含错误的单词,名称等.让Lucene找到包含文档的最简单方法是什么
"this is Licene"
Run Code Online (Sandbox Code Playgroud)
当用户搜索时
"Lucene"?
Run Code Online (Sandbox Code Playgroud)
这仅适用于演示应用,因此我们需要最简单的解决方案.
有一个字符串向量列表:
xx <- c("concord wanderer basic set air snug beige",
"concord wanderer basic set air snug black noir",
"concord wanderer basic set air snug blue bleu",
"concord wanderer basic set air snug brown marron",
"concord wanderer basic set air snug green vert",
"concord wanderer basic set air snug grey gris",
"concord wanderer basic set air snug red rouge",
"concord wanderer basic set air snug rose" )
Run Code Online (Sandbox Code Playgroud)
我试图在向量的元素之间获得最小的共享部分,例如,在这里我应该得到:
"concord wanderer basic set air snug"
Run Code Online (Sandbox Code Playgroud)
xx是前一个过程的结果,所以我确信元素之间存在共享部分.但被删除的部分并不总是在他的结尾.
使用strsplit和`table我得到这个部分解决方案,但它有点棘手,我放松了原始的单词顺序:
table_x …Run Code Online (Sandbox Code Playgroud) fuzzy-search ×10
python ×4
django ×2
lucene ×2
c# ×1
django-i18n ×1
fuzzywuzzy ×1
grouping ×1
intersection ×1
java ×1
ocr ×1
php ×1
r ×1
regex ×1
solr ×1
string ×1
text-mining ×1