Я использую elasticsearch php.
первоначальный маппинг выглядит так
$params = [
'index' => 'myindex',
'type' => 'faq_article',
'body' => [
'settings' => [
'analysis' => [
'char_filter' => [
'ru' => [
'type' => 'mapping',
'mappings' => ['Ё=>Е', 'ё=>е']
],
],
'analyzer' => [
'app_index_analyzer' => [
'type' => 'custom',
'tokenizer' => 'standard',
'char_filter' => ['ru', 'html_strip'],
'filter' => ['lowercase', 'stop', 'russian_morphology', 'english_morphology']
],
'app_search_analyzer' => [
'type' => 'custom',
'tokenizer' => 'standard',
'char_filter' => ['ru', 'html_strip'],
'filter' => ['lowercase', 'stop', 'russian_morphology', 'english_morphology']
]
],
],
'filter' => [
'stop' => [
'type' => 'stop',
'stopwords' => ['как','а','без','более','бы','был','была','были','было','быть','в','вам','вас','весь','во','вот','все','всего','всех','вы','где','да','даже','для','до','его','ее','если','есть','еще','же','за','здесь','и','из','или','им','их','к','как','ко','когда','кто','ли','либо','мне','может','мы','на','надо','наш','не','него','нее','нет','ни','них','но','ну','о','об','однако','он','она','они','оно','от','очень','по','под','при','с','со','так','также','такой','там','те','тем','то','того','тоже','той','только','том','ты','у','уже','хотя','чего','чей','чем','что','чтобы','чье','чья','эта','эти','это','я','a','an','and','are','as','at','be','but','by','for','if','in','into','is','it','no','not','of','on','or','such','that','the','their','then','there','these','they','this','to','was','will','with'],
'ignore_case' => true
]
]
],
'mapping' => [
'faq_article' => [
'_source' => [
'enabled' => true
],
'properties' => [
'id' => [
'type' => 'integer'
],
'topic' => [
'type' => 'integer'
],
'question' => [
'index_analyzer' => 'app_index_analyzer',
'search_analyzer' => 'app_search_analyzer',
'type' => 'string'
],
'answer' => [
'index_analyzer' => 'app_index_analyzer',
'search_analyzer' => 'app_search_analyzer',
'type' => 'string'
],
]
]
]
]
];
индексирую документы в цикле
foreach($articlesFaq as $article){
$params['id'] = $article->getId();
$params['body']['id'] = $article->getId();
$params['body']['topic'] = $article->topic->id;
$params['body']['question'] = $article->question;
$params['body']['answer'] = $article->answer;
try {
$response = $client->index($params);
print_r($response);
} catch (Exception $e) {
print_r($client->transport->getLastConnection()->getLastRequestInfo());
}
}
но когда я делаю поиск, то я получаю ответы со стоп словами
по запросу "БЕЗ" мне радостно приходит "КАК ИГРАТЬ БЕЗ"
по запросу "как" мне приходят "КАК ПОМЕНЯТЬ" и тд
Подскажите, что я сделала не так?