Elasticsearch Pg_trgm 相似度( text, text ) → real (postgresql Function)

问题描述

我正在尝试使用 Elasticsearch 缩短 postgresql 数据库中文本的搜索时间,问题是在 Postgresql 示例中使用“相似性”函数搜索返回具有最佳分数的产品名称

    select p.name,similarity(p.name,'HORTIFRUTIGRANJEIROS/PITAYA') as sml
    from products p 
    order by sml desc limit 10

当改成 Elasticsearch 时,我使用了 java 搜索 API:


    MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("name","HORTIFRUTIGRANJEIROS/PITAYA");
    matchQueryBuilder.fuzziness(Fuzziness.AUTO);
    searchSourceBuilder.query(matchQueryBuilder);
    searchSourceBuilder.sort(new scoreSortBuilder().order(SortOrder.DESC));
    SearchRequest searchRequest = new SearchRequest();
    searchRequest.source(searchSourceBuilder);

但是响应中带有分数的产品的顺序非常不同。 有没有办法在 Elasticsearch 上找到类似于 similarity() 函数的东西?知道它使用 trigram 进行搜索,我在 Elasticsearch 上找到了一些关于 n-gram 的资源,但没有找到有关 java 搜索 API 的资源。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...