【发布时间】:2018-09-05 10:36:24
【问题描述】:
对于网店的搜索功能,我使用的是ongr的elasticsearchDSL(git/docs)。
搜索产品名称的基本设置:
$boolQuery = new BoolQuery();
$boolQuery->addParameter('minimum_should_match', 1);
$wcQuery = new WildcardQuery('name', "*$_term*");
$boolQuery->add($wcQuery, BoolQuery::MUST);
这是一个令人讨厌的行为:
查询“notebook”会查找带有该词条的所有产品。 但查询“note book”却一无所获。
也许通配符查询无论如何都不是最佳做法。
我需要什么:
- 搜索多个字段(名称、描述、制造商)
- 没有模糊性:在任何这些字段中查找所有搜索词
最好的方法是什么?
我尝试了MultiMatchQuery 与best_fields 和phrase_prefix 和SHOULD/MUST 类型的组合,但结果要么有太多不相关的结果,要么根本没有。
感谢您的宝贵时间。
【问题讨论】:
-
elastic.co/guide/en/elasticsearch/reference/current/… 这里明确提到通配符项不应以通配符 * 或 ? 之一开头。
-
没错,但服务器可以处理
标签: php elasticsearch elasticsearch-dsl