当前位置: 首页 > 知识库问答 >
问题:

Lucene拼写检查器3.6字符集

屈博
2023-03-14

我需要帮助设置lucene拼写检查器的字符集(3.6版的核心lucene和拼写检查器)。我的字典(“D:\dictionary.txt”)既有英语单词,也有俄语单词。我的代码与英文文本配合得很好。例如,它返回单词“hello”的正确拼写。但它不适用于俄语。例如,当我拼错一些俄语单词时,编译器引发异常(线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:0),它找不到任何关于俄语单词的建议。

这是我的密码:

        RAMDirectory spellCheckerDir = new RAMDirectory();
        SpellChecker spellChecker = new SpellChecker(spellCheckerDir);
        StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);
        IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36, analyzer);
        InputStreamReader isr = new InputStreamReader(new FileInputStream(new File("D:\\dictionary.txt")), "UTF-8");
        PlainTextDictionary dictionary = new PlainTextDictionary(isr);
        spellChecker.indexDictionary(dictionary, config, true);
        suggestions = spellChecker.suggestSimilar("hwllo", 1); // word 'hello' is misspeled like 'hwllo'

共有1个答案

欧阳山
2023-03-14

基于您的代码,我可以提供的最佳选择(非常有用,10倍)。我刚刚分别加载了两个词典,它们也可以在组合文件中使用。

    RAMDirectory spellCheckerDir = new RAMDirectory();
    SpellChecker spellChecker = new SpellChecker(spellCheckerDir);
    StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_44);
    IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_44, analyzer);
    InputStreamReader isr = new InputStreamReader(new FileInputStream(new File("d:/dictionaries/English/words.english")), "UTF-8");
    PlainTextDictionary dictionary = new PlainTextDictionary(isr);
    spellChecker.indexDictionary(dictionary, config, true);
    isr = new InputStreamReader(new FileInputStream(new File("d:/dictionaries/Swedish/words.swedish")), "UTF-8");
    PlainTextDictionary swdictionary = new PlainTextDictionary(isr);
    spellChecker.indexDictionary(swdictionary, config, true);
    String wordForSuggestions = "hwllo";
    int suggestionsNumber = 5;

    String[] suggestions = spellChecker.suggestSimilar("hwllo", suggestionsNumber); // word 'hello' is misspeled like 'hwllo'
 类似资料:
  • 自 Electron 8 以来已内置支持 Chromium 拼写检查器。 On Windows and Linux this is powered by Hunspell dictionaries, and on macOS it makes use of the native spellchecker APIs. How to enable the spellchecker? 对于 Electr

  • 我对Python和NLTK相当陌生。我正忙于一个可以执行拼写检查的应用程序(用正确的单词替换拼写错误的单词)。我目前正在使用Python 2.7上的附魔库、PyEnchant和NLTK库。下面的代码是一个处理更正/替换的类。 我编写了一个函数,它接收单词列表,对每个单词执行replace(),然后返回这些单词的列表,但拼写正确。 现在,我真的不喜欢这个,因为它不是很准确,我正在寻找一种方法来实现拼

  • 问题内容: 我需要一个良好的Java拼写检查器库,该库可以实时对JTextArea(或任何JTextComponent)进行拼写检查。也就是说,在用户键入时,它应该在文本下方显示一个波浪形的红色下划线。 它需要能够通过左键单击(是,左键单击)列出所有可用的单词替换。如果不可能,请单击鼠标右键。 它需要具有“全部忽略”,但没有“添加”,“忽略”或其他任何一个。只是无视一切。 理想情况下,至少在某种程

  • 概述 Sublime Text 使用Hunspell来进行拼写检查,可以从OpenOffice.org Extension List获取额外的字典。 Sublime Text 可用字典:https://github.com/SublimeText/Dictionaries 字典 Sublime Text 目前只支持 UTF-8 编码格式的字典,大多数字典并没有使用 UTF-8 字典,而是使用了和其

  • 本文向大家介绍什么是拼写检查?相关面试题,主要包含被问及什么是拼写检查?时的应答技巧和注意事项,需要的朋友参考一下 浏览器中输入区欧盟,输入错误,会被拼写检查为去欧盟,实际上原理是采用了贝叶斯原理,由贝叶斯公式可知P(c|w),w表示拼写错误的情况,而c表示实际想要拼写的单词,等于P(w|c)P(c)/P(w),也就是在若干备选中选择最大的P(c|w),而P(w)都是相同的,即找到使得P(w|c)

  • 我很难理解如何处理lucene中的特殊角色 我的分析器没有停止字,因此不会删除特殊字符: 比我创建文档要多: 查询标签:brüder\-g工作正常,但是模糊查询标签:brüder\-g~不返回任何内容。当街道名称为Eselgasse查询标签时:Esel~将正常工作。 我使用Lucene 5.3.1 谢谢你的帮助!