GET my_index/_search
{
"query": {
"match": {
"message" : "quick dog"
}
}
}
qucik과 dog 를 모두 가진 가진 doc 을 찾는다
GET my_index/_search
{
"query": {
"match": {
"message" : {
"query": "quick dog",
"operator": "and"
}
}
}
}
// lazy dog 라는 단어가 정확히 들어가 doc 을 찾는다.
// match_phrase 에서는 "slop": 1 이라는 옵션으로 lazy과 dog 사이에 한개 까지의 오차를 허용함. 스키 장갑일 때 스키 가죽 장갑, 스키 털 장갑 등을 검색 가능함.
GET my_index/_search
{
"query": {
"match_phrase": {
"message" : {
"query": "lazy dog",
"slop": 1
}
}
}
}
query_string (q 파라미터에서 했던 거랑 똑같다)
GET my_index/_search
{
"query": {
"query_string": {
"default_field": "message",
"query": "(jumping AND lazy) OR \"quick dog\""
}
}
}
풀 텍스트 쿼리란?
풀텍스트 쿼리에 해당하는 쿼리 함수가 여러개 존재하는데 종류에 따라 text 를 검색하며각 함수를 어떻게 사용하느냐에 따라 조회 결과가 달라진다.
사용자가 가장 보고 싶어하는 것을 스코어를 매겨 가장 높은 doc 순위로 보여주는 것이 풀 텍스트 쿼리이다.
스코어 점수가 높은 것 우선순위로 나온다.
Term Frequency(TF)
내가 사슴벌레라는 단어를 검색 했을 때 사슴벌레 라는 단어가 10번 들어간 웹페이지가 5번 들어간 웹페이 보다 더 보고 싶어하는 정보가 많이 있는
페이지일 확률이 크다. 그래서 도큐먼트 내에 내가 검색한 Term이 doc에 많을 수록 점수가 높다. (검색에 쓰이는 검색 단어를 Term 이라고 함)
IDF: 무선 이어폰을 검색했을 때 무선 또는 이어폰이란 단어를 포함하는 페이지들을 보여줄 것이다. 검색 결과 중 무선이라는 단어가 100번 등장하고 이어폰이라는 단어가 10번 등장 했을 때 10번 들어가 이어폰이라는 단어가 더 희소성이 높아 중요할 가능성이 크다.
- 예시
1 - 10000 개의 doc 들 중 무선 이라는 단어가 총 20000번 등장 했다면 점수가 감소하게 된다. 그래서 인덱스 내에 있는 doc들 중 자주 등장하는 Term 은 희소성이 감소하게 된다. (Term 별로 Term 이 가지는 점수가 있다.)
Field Length: 제목에도 있고 내용에도 있다면 제목에 있을 때 Term 의 중요성이 더 크다.