【发布时间】:2014-08-23 02:46:06
【问题描述】:
我想对查询使用模糊匹配,但结果顶部显示完全匹配。
我尝试了以下方法。
$return = $this->_client->search(
array(
'index' => self::INDEX,
'type' => self::TYPE,
'body' => array(
'query' => array(
'bool' => array(
'must' => array(
'multi_match' => array(
'query' => $query,
'fields' => array('name', 'brand', 'description'),
'boost' => 10,
),
'fuzzy_like_this' => array(
'like_text' => $query,
'fields' => array('name', 'brand', 'description'),
'fuzziness' => 1,
),
),
),
),
'size' => '5000',
),
)
);
由于格式错误的查询错误,这不起作用。
有什么想法吗?
【问题讨论】:
-
现在我明白你想要什么了 :)。您是否尝试过感觉或工具,以便您可以用纯 json 编写您喜欢的查询?如果我首先使用 sense 直接针对 elasticsearch 工作,然后将其转换为 NEST(我在 .NET 中使用),我发现它会容易得多。
-
不,还没有。我去看看感觉。这很烦人,我原以为默认情况下完全匹配会排在首位。
-
我觉得你的查询有点奇怪。当我读到它时,感觉你必须有一个 multi_match 命中和一个fuzzy_like_this,它应该是应该的。看我的回答。
标签: php elasticsearch fuzzy-search