gpt4 book ai didi

c# - Lucene Spellchecker 奇怪的排名建议

转载 作者:太空宇宙 更新时间:2023-11-03 11:12:03 25 4
gpt4 key购买 nike

我在 Lucene.NET contrib NuGet 包 v3.0.3 中使用拼写检查器。

拼写检查器索引是使用 _spellChecker.IndexDictionary(new SpellChecker.Net.Search.Spell.LuceneDictionary(reader, "Name"));

创建的

我遇到的问题是(我假设)由于带状疱疹/n-grams 的工作方式,运行 _spellChecker.SuggestSimilar("Wiess") 不会得分为“Weiss”很高。 “Witness”、“Wireless”和“Wills”得分高于“Weiss”。

似乎“Weiss”的得分应该高于“Wireless”。有什么方法可以调整它以获得该结果吗?

最佳答案

您没有提供返回的内容,所以我假设您只是不喜欢它提供的内容,而不是它什么也没给您。

在 Lucene 文档中,没有采用 1 个参数的 SuggestSimilar 方法。我相信这是因为你永远不应该只依赖一个结果,根据 API,最少引用建议参数的数量:

“即如果 numSug == 1,不要指望该建议是最好的。因此,您应该将此值设置为至少 5 以获得好的建议。”

我假设您可以提供第二个参数。尝试将其设置得更高,看看会得到什么。

编辑--

好的。我懂了。也许您正在寻找一个简单的 Levenshtein 距离风格算法。 Lucene 4.0 为此提供了一个(实验性的)新拼写检查器:DirectSpellChecker .另外,一个简单的 FuzzyQuery我相信,也会完成这项工作。这两种方法中的任何一种都会删除 SpellChecker 算法的某些方面,有效地简化它,并且您可能会发现您的结果总体上变得更糟。

注意:

  • “维斯”“维斯”距离2
  • “Wiess”“见证”距离 2
  • “Wiess”“无线”距离 3
  • “Wiess”“Wills”距离2

所以,实际上,这可能不会让你到达那里。您可能会编写一个过滤器,优先选择与查询长度相同的结果,但这无助于区分 Wills。那个你可能不得不忍受的。

关于c# - Lucene Spellchecker 奇怪的排名建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13653702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com