java - 在 Lucene-4.x 中将有效负载提升与 FuzzyQuery 结合使用

标签 java lucene fuzzy-search payload

是否有机会使用描述的有效负载提升hereFuzzyQuery ?或者也许有人可以建议实现混合模糊/有效负载搜索的最佳策略是什么。

目前,我在索引中有一些文档,其中某些部分使用本文中描述的技术获得了更高的匹配优先级。一切都很顺利,直到模糊查询登场。

现在我正计划以某种方式破解 Lucene 代码,以便能够使用有效负载因子调整术语评分,例如在 MultiTermQuery.TopTermsScoringBooleanQueryRewrite.addClause() 中。但是我不确定这是否是解决问题的最佳方法。

请提出建议。

可能 a very similar question前段时间已经询问过,但没有得到满意的解决方案。

最佳答案

我有一个解决方案。

您应该仅使用 PayloadTermQuery,但您可以使用唯一的过滤器扩展您的 token 。通过这个独特的过滤器,您可以将新的简化术语放入 token 链中,我的意思是 ascii 折叠、删除双字母等等......通过使用 PayloadTermQuery,您还可以降低新术语的分数。

对我来说,这个解决方案工作得很好,而且速度非常快。我希望我能帮忙。

我的解决方案中的一些代码:

  private String simplifyingToken(String token) {
    String token = H.foldToAscii(token);
    if(!H.isNumber(token)){
        token = token.replaceAll("(.)\\1", "$1"); //double letters
    }
    token = token.replaceAll("\\-", "");
    token = token.replaceAll("(ou)", "u");
    token = token.replaceAll("(cz)", "c");
    token = token.replaceAll("w", "v");
    return simpleTokenJocker + token; //tf idf correction
}

关于java - 在 Lucene-4.x 中将有效负载提升与 FuzzyQuery 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27624859/

相关文章:

java - 如何保证Gson在toJson()中的输出是ASCII?

java - 使用 Hibernate Search Query DSL 构建模糊查询时如何处理同义词和停用词

json - Elasticsearch中的SQL查询

lucene - 使用lucene进行模糊搜索

java - java中两次的区别

java - 用于查找和替换的正则表达式模式

java - Apache POI Excel 行和列索引

java - 为什么我们在搜索时使用过滤器

在模糊@username 上查找用户匹配的算法

sql-server - 模糊逻辑搜索全名