@PadreRv

Правильный запрос на поиск в elasticsearch?

Помогите пожалуйста с запросом, есть имена и простой запрос по них
$request = array(
"from" => 0,
"size"=>1000000,
"query"=> array(
"match"=>array(
"full_description"=>array(
"query"=>$text,
"fuzziness"=> 2,
"prefix_length"=> 1,
)
)
);


но когда вбиваеш Иванов оно выдает первым Иванцов, потом Иванов а уже потом все остальное. Почему _score у Иванцова больше чем у Иванова? Пробовал анализаторы, ну код вот такой у меня:
Создание индекса
$request = array(
"mappings"=> array(
"person"=>array(
"properties"=>array(
"id"=>array(
"type"=> "integer",
"index"=> "not_analyzed"
),
"updated"=>array(
"type"=> "date",
"index"=> "not_analyzed"
),
"full_description"=>array(
"type"=> "string"
)
)
)
));


Выборка из БД плагином jdbc
$request = array("type" => "jdbc",
"jdbc"=>array(
"url" => "jdbc:mysql://localhost:3306/test_m",
"user" => "user",
"password" => "pass",
"sql" => "SELECT id, updated, full_description FROM product_info",
"index"=>"index1",
"type"=>"person"
),
"analysis"=>array(
"analyzer"=> "russian"
)
);

Поиск, что закомичено я уже пробовал, ничего не помогает:
$request = array(
"from" => 0,
"size"=>1000000,
"query"=> array(
//"match_all"=>array(""=>""),
"match"=>array(
"full_description"=>array(
//"query"=> mb_convert_encoding($text, "utf-8", "CP1251"), //геморой с кодировками, еластик принимает utf-8
"query"=>$text,
"fuzziness"=> 2,
"prefix_length"=> 1,
//"min_similarity"=> "0.5"
)
)/*,
"order"=>array(
"max_score"=> "desc"
)*/
)/*,
"analysis"=>array(
"analyzer"=> "russian"
)*/
/*,
"sort"=>array(
"updated"=>array(
"order"=>"desc",
"ignore_unmapped" => "true"
)
)*/
);


Помогите люди добрые, думаю создать мультизапрос, первый по точному значению, а второй з фузинес 2, не будут результаты повторяться?
  • Вопрос задан
  • 866 просмотров
Пригласить эксперта
Ответы на вопрос 2
un1t
@un1t
Если я правильно понял, у тебя просто стемминг используется. Нужна морфология, вот плагин
https://github.com/imotov/elasticsearch-analysis-m...
Ответ написан
@PadreRv Автор вопроса
Все на стековерфлов, сказали мне причину, решу, напишу функцию ru.stackoverflow.com/questions/418469/%D0%9D%D0%B5...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы