我希望我的搜索返回我查询字符串的完全匹配。
查询字符串包含2个字。
查询:“普通医生”应仅返回普通医生,而不应返回“普通医生”
搜索方式:
$lower = 'general doctor';
$query = new \Elastica\Query\MatchAll();
$tagquery = new \Elastica\Query\Match();
$tagquery->setDefaultField('branchslug');
$tagquery->setFieldBoost('branchslug', 10);
$tagquery->setQuery(mb_strtolower($lower, 'UTF-8'));
$tagfilter = new \Elastica\Filter\Nested();
$tagfilter->setPath('expertdetailbranchid');
$tagfilter->setQuery($tagquery);
$tagfilter->setCached();
$filterBoolArticle = new \Elastica\Filter\Bool();
$filterBoolArticle->addMust($tagfilter);
$filterBoolArticle->setCached();
索引映射:http://pastebin.com/JJkc9jq4
最佳答案
我解决了问题。
$lower = '"general doctor"';
代替
$lower = 'general doctor';
关于lucene - Elasticsearch使用空格搜索确切的查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21989489/