我希望我的搜索返回我查询字符串的完全匹配。
查询字符串包含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/

10-09 20:09