elasticsearch를 사용하여 "스키"라는 단어로 모든 항목을 찾으십시오.탄성 검색 검색 단어와 모든 동의어를 찾으십시오
내 매핑 (PHP 배열) :
"properties" => [
"title" => [
"type" => "string",
"boost" => 1.0,
"analyzer" => "autocomplete"
]
]
설정 :
"settings"=> [
"analysis" => [
"analyzer" => [
"autocomplete" => [
"type" => "custom",
"tokenizer" => "standard",
"filter" => ["lowercase", "trim", "synonym", "porter_stem"],
"char_filter" => ["html_strip"]
]
],
"filter" => [
"synonym" => [
"type" => "synonym",
"synonyms_path" => "analysis/synonyms.txt"
]
]
]
]
검색 쿼리 다음 sysnonyms.txt에서
[
"index" => "articles",
"body" => [
"query" => [
"filtered" => [
"query" => [
"bool" => [
"must" => [
"indices" => [
"indices" => ["articles"],
"query" => [
"bool" => [
"should" => [
"multi_match" => [
"query" => "skiing",
"fields" => ["title"]
]
]
]
]
]
]
]
]
]
],
"sort" => [
"_score" => [
"order" => "desc"
]
]
],
"size" => 10,
"from" => 0,
"search_type" => "dfs_query_then_fetch",
"explain" => true
];
스키 => 크 산트 있습니다.
내가 (이 입력 단어이기 때문에) "스키"모든 항목을 얻을 싶다 "스키"와 (동의어 파일로) 다음 "크 산트"(porter_stem 토크 나이로). 그러나 "xanthic"이라는 단어로만 결과를 얻으십시오.
제발, 왜 말해? 어떻게 인덱스를 구성해야합니까?