【问题标题】:Java library for Fuzzy Full-Text Search用于模糊全文搜索的 Java 库
【发布时间】:2017-05-19 03:47:36
【问题描述】:

我知道可能会使用 Lucene 和 Solr,但是是否有任何简单的 Java 库只是做模糊全文搜索部分,例如:

SomeScore score = fuzzyFullTextSearch(String text, String searchTerm, int maxDistance)

''score'' 决定了度量、发现(模糊)searchTerm 的频率以及它与原始 searchTerm 的相似程度。

我不使用 Lucene 或类似软件的原因是它对我的用例来说太笨重了,而且我只需要搜索一次。使用 Lucene 的 FuzzyQuery 进行编辑的 maxDistance 也只有 2,这对于我的特殊用例来说还不够好。

有没有轻量级的库可以实现某事。如上图?

【问题讨论】:

    标签: java lucene fuzzy-search fuzzy


    【解决方案1】:

    像往常一样,Apache Commons 来救援。

    org.apache.commons.lang3.StringUtils 有很多方法可以获取 fuzzyDistancelevenshteinDistance 和一些更复杂的指标

    所以,朴素的伪代码会是这样的:

    split the text into tokens by spaces, commas, etc.
    for each token
        calcDistanceBetweenTokenAndSearchTerm
    getSumScore // or avg or whatever
    

    另一种方法是使用 commons-text org.apache.commons.text.similarity.FuzzyScore,它能够计算两个字符串之间的距离,但是当然很大程度上取决于确切的要求。

    我并不是说这是对可能答案的全面介绍,但您可以尝试一下。

    【讨论】:

    • 所以我假设还没有开放的库,尽管在不使用诸如 Lucene 之类的索引技术的情况下执行此操作似乎是一个非常常见的用例(即使它更有效)。也许我将来会提供一个图书馆
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 2020-05-07
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    相关资源
    最近更新 更多