gpt4 book ai didi

MySQL 全文搜索 "AND" bool 模式到 ElasticSearch

转载 作者:太空宇宙 更新时间:2023-11-03 12:23:10 26 4
gpt4 key购买 nike

我最近尝试从 MySQL 全文搜索迁移到 ElasticSearch,我对翻译一些查询有点困惑。

我有这个问题。

 "SELECT * FROM Books WHERE MATCH (description) AGAINST ('+Harry +Potter' IN BOOLEAN MODE)"

这意味着“Harry”和“Potter”都必须出现在描述栏中,无论顺序或位置如何。 (为了举例,请假设“Harry”和“Potter”可以相互独立。)

我用 ElasticSearch 试过了

{
"query": {
"query_string": {
"query": "Harry Potter",
"fields": ["description"]
}
}
}

但它仍然会给出一些只包含“Harry”或“Potter”的结果。

这个我也试过,

{
"query": {
"bool": {
"must" : {
"term" : { "description" : "Harry Potter" }
}
}
}
}

这个返回所有包含“Harry Potter”的结果,而不是“Harry Bla Bla Bla Potter”和“Potter Bla Bla Bla Harry”。

返回与上述 MySQL 查询相同结果的最简单(或者可能也是最快)的 ElasticSearch 查询是什么。

更新

我刚找到这样的东西

{
"query": {
"match" : {
"description" : {
"query" : "Harry Potter",
"operator" : "and"
}
}
}
}

结果似乎是正确的。但是还有其他更常见的方式吗?

最佳答案

Vis 回答的更多信息

如果你想“Harry Potter”也匹配“Harry blabla Potter”,你可以将query_string的phrase_slop调整为> 0,这是匹配项之间允许的距离: - 默认为 0 意味着需要精确的短语匹配,搜索阶段之间没有其他术语 - 设置为 1 意味着在它之间允许 1 个术语,所以“Harry blalal Potter”将匹配,但“Harry blabla bloblo Potter”不会匹配。 - ...

关于MySQL 全文搜索 "AND" bool 模式到 ElasticSearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18825246/

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