gpt4 book ai didi

java - 多个字段的短语匹配

转载 作者:行者123 更新时间:2023-12-01 11:19:45 24 4
gpt4 key购买 nike

这是我现在的做法:


..
.setQuery(
过滤查询(
multiMatchQuery(String.format("*%s*", query), "姓名", "地址", "电话")
.type(MultiMatchQueryBuilder.Type.CROSS_FIELDS),
地理距离过滤器(“位置”)
.distance(半径, DistanceUnit.千米)
.geoDistance(GeoDistance.PLANE)
.point(纬度、经度)
)
)
..

问题是它不会搜索部分短语或单词的一部分..即使使用通配符..

我找到了matchPhraseQuery,但它似乎只适用于一个字段。是否有其他方法来实现这样的搜索?

最佳答案

不幸的是,多重匹配不支持查询通配符。听起来您可能想看看 Query String Query 而不是使用多重匹配。 ,它具有更多的模式匹配灵 active ,并且可以针对多个字段运行。查询字符串非常强大,因为它为您提供了 Lucene 查询语言供您使用。它的 DSL 看起来像:

    {
"query_string" : {
"fields" : ["name", "address", "phone"],
"query" : "*query*"
}
}

在 Java 中,大致如下:

..
.setQuery(
filteredQuery(
.queryString("*test*").field("name").field("phone").field("address"),
geoDistanceFilter("location")
.distance(radius, DistanceUnit.KILOMETERS)
.geoDistance(GeoDistance.PLANE)
.point(latitude, longitude)
)
)
..

搜索时不鼓励使用通配符和模式匹配,因为它们的计算成本很高。您应该尝试使用类似 NGram Tokenizer 的内容来查看这些模糊搜索案例的索引时间解决方案。在必填字段上生成这些部分匹配。考虑使用不同类型的分析器来获得更好的搜索索引,而不是试图让查询构建器屈服于您的意愿。

关于java - 多个字段的短语匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31389296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com