Elasticsearch ищет точный запрос с пробелом

я хочу, чтобы мой поиск возвращал точное совпадение моей строки запроса. Строка запроса состоит из 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


person mollyjane    schedule 24.02.2014    source источник


Ответы (2)


Я решил проблему.

$lower = '"general doctor"';

вместо

$lower = 'general doctor';
person mollyjane    schedule 24.02.2014

Я знаю, что вы ответили на свой вопрос, но это может быть полезно ...

Синтаксис запроса Lucene http://lucene.apache.org/core/4_0_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html

person Matthew Hager    schedule 24.02.2014