Apache Lucene 和通过候选词列表在文本文档中进行模糊搜索

类二烯类

我有 OCR 处理后的文本文件。由于原始文档的图像质量不佳,此文本经常包含损坏的单词。

此外,我还有一个有效公司名称的列表,这些名称可能出现在提到的文本文件中。

根据此公司名称列表,我想确定拥有扫描文档的公司名称(即使公司名称在文本文件内部略有损坏)。

我想对扫描的文档进行模糊搜索,以便尝试从那里的列表中找到公司名称。获胜者将是得分最高的公司名称。

我想我可以为此目的使用 Apache Lucene 功能。您能否提出建议,或者可以使用 Apache Lucene 实现,如果可以,请显示一个示例。

神秘人

提出的想法如下。您可以为每个公司名称(甚至描述和任何有用的信息)创建一个 Lucene 文档

Document doc = new Document();
        doc.add(new TextField("text", "BlueCross BlueShield", Field.Store.YES));
        writer.addDocument(doc);

添加所有公司后,您可以将获得的文本用作MoreLikeThis查询。MLT 背后的想法是遵循,它试图找到类似的文本。

一个可以创建如下:

MoreLikeThis mlt = new MoreLikeThis(reader);
        mlt.setAnalyzer(analyzer);
        mlt.setMinDocFreq(0);
        mlt.setMinTermFreq(0);
        mlt.setMinWordLen(0);
        final Query query = mlt.like("text", new StringReader("BlueCros BlueShield              Customer Service \n" +
                "   1-800-521-2227           \n" +
                "                        of Texas                          Preauth-Medical              1-800-441-9188           \n" +
                "                                                          Preauth-MH/CD                1-800-528-7264           \n" +
                "                                                          Blue Card Access             1-800-810-2583           "));
        System.out.println(query);

        TopDocs results = searcher.search(query, 5);

总的来说,我们正在做反向匹配,它应该可以帮助你,我在那里做了一些测试。棘手的部分是模糊匹配,因为 MLT 不提供它,因此在这种情况下,可以重写 MLT 查询以将其包装到 FuzzyQuery 中。

BooleanQuery.Builder builder = new BooleanQuery.Builder();
        if (query instanceof BooleanQuery) {
            final List<BooleanClause> clauses = ((BooleanQuery) query).clauses();
            for (BooleanClause bc : clauses) {
                Query q = bc.getQuery();
                if (q instanceof TermQuery) {
                    builder.add(new FuzzyQuery(((TermQuery) q).getTerm(), 2), bc.getOccur());
                } else {
                    builder.add(bc);
                }
            }
        }

此外,使用适当的分析器非常重要 - 在BlueCross我提供的简单情况下,它将在大写更改时拆分标记。在那里添加同义词可能会有所帮助

完整的代码示例位于此处

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Apache Lucene-优化搜索

来自分类Dev

使用Apache Lucene进行搜索优化

来自分类Dev

Apache Lucene和Hibernates搜索出错

来自分类Dev

使用 apache lucene 进行词形还原

来自分类Dev

静态网站的Apache Lucene

来自分类Dev

Apache Lucene 版本

来自分类Dev

如何在Apache Lucene中删除或更新文档

来自分类Dev

Apache Solr-Lucene-邮政编码半径搜索

来自分类Dev

如何开始使用 Apache Lucene 搜索 bean 属性?

来自分类Dev

Solr 3.6使用Apache Lucene进行排序吗?

来自分类Dev

使用 Apache Lucene 进行布尔查询的结果编号

来自分类Dev

Apache Lucene TokenStream违反合同

来自分类Dev

了解Apache Lucene的评分算法

来自分类Dev

使用一个静态过滤器的基于Hibernate Apache Lucene的全文本搜索

来自分类Dev

尽管使用了StopAnalyzer和StopFilter,但Apache Lucene不会过滤停用词

来自分类Dev

检查solr / home属性和日志。ClassCastException:类org.apache.lucene.analysis.icu.ICUFoldingFilterFactory

来自分类Dev

Problems using org.apache.lucene on Appengine

来自分类Dev

如何分析使用Apache Lucene 4.0的领域

来自分类Dev

Apache Lucene-创建和存储索引?

来自分类Dev

Apache的Lucene的对J2EE 1.4

来自分类Dev

Apache Lucene-创建和存储索引?

来自分类Dev

无法导入org.apache.lucene

来自分类Dev

PyLucene org.apache.lucene.benchmark丢失

来自分类Dev

NoClassDefFoundError:org / apache / lucene / analysis / util / CharArraySet

来自分类Dev

Lucene对短语进行模糊搜索(FuzzyQuery + SpanQuery)

来自分类Dev

LUCENE - 对包含空格的单词进行模糊搜索

来自分类Dev

未创建带有Lucene搜索索引文件的休眠状态:IndexWriterConfig.setWriteLockTimeout(J)Lorg / apache / lucene / index / IndexWriterConfig;

来自分类Dev

如何根据lucene搜索结果查询lucene?

来自分类Dev

使用Lucene和Azure Search .NET SDK进行模糊搜索

Related 相关文章

  1. 1

    Apache Lucene-优化搜索

  2. 2

    使用Apache Lucene进行搜索优化

  3. 3

    Apache Lucene和Hibernates搜索出错

  4. 4

    使用 apache lucene 进行词形还原

  5. 5

    静态网站的Apache Lucene

  6. 6

    Apache Lucene 版本

  7. 7

    如何在Apache Lucene中删除或更新文档

  8. 8

    Apache Solr-Lucene-邮政编码半径搜索

  9. 9

    如何开始使用 Apache Lucene 搜索 bean 属性?

  10. 10

    Solr 3.6使用Apache Lucene进行排序吗?

  11. 11

    使用 Apache Lucene 进行布尔查询的结果编号

  12. 12

    Apache Lucene TokenStream违反合同

  13. 13

    了解Apache Lucene的评分算法

  14. 14

    使用一个静态过滤器的基于Hibernate Apache Lucene的全文本搜索

  15. 15

    尽管使用了StopAnalyzer和StopFilter,但Apache Lucene不会过滤停用词

  16. 16

    检查solr / home属性和日志。ClassCastException:类org.apache.lucene.analysis.icu.ICUFoldingFilterFactory

  17. 17

    Problems using org.apache.lucene on Appengine

  18. 18

    如何分析使用Apache Lucene 4.0的领域

  19. 19

    Apache Lucene-创建和存储索引?

  20. 20

    Apache的Lucene的对J2EE 1.4

  21. 21

    Apache Lucene-创建和存储索引?

  22. 22

    无法导入org.apache.lucene

  23. 23

    PyLucene org.apache.lucene.benchmark丢失

  24. 24

    NoClassDefFoundError:org / apache / lucene / analysis / util / CharArraySet

  25. 25

    Lucene对短语进行模糊搜索(FuzzyQuery + SpanQuery)

  26. 26

    LUCENE - 对包含空格的单词进行模糊搜索

  27. 27

    未创建带有Lucene搜索索引文件的休眠状态:IndexWriterConfig.setWriteLockTimeout(J)Lorg / apache / lucene / index / IndexWriterConfig;

  28. 28

    如何根据lucene搜索结果查询lucene?

  29. 29

    使用Lucene和Azure Search .NET SDK进行模糊搜索

热门标签

归档