Elasticsearch使用空格搜索确切的查询

时间:2014-02-24 13:40:02

标签: lucene elasticsearch elastica

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

2 个答案:

答案 0 :(得分:2)

我解决了问题。

$lower = '"general doctor"';

而不是

$lower = 'general doctor';

答案 1 :(得分:1)

我知道你回答了自己的问题,但这可能有用......

Lucene查询语法 http://lucene.apache.org/core/4_0_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html