검색어 자동 완성 | 광고주 99%가 몰라서 돈쓰는 중입니다. (자동완성어 수작업편, 자동완성어, 자동완성어 등록) 29471 명이 이 답변을 좋아했습니다

당신은 주제를 찾고 있습니까 “검색어 자동 완성 – 광고주 99%가 몰라서 돈쓰는 중입니다. (자동완성어 수작업편, 자동완성어, 자동완성어 등록)“? 다음 카테고리의 웹사이트 ppa.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://ppa.maxfit.vn/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 미바시 Mibasi 이(가) 작성한 기사에는 조회수 26,173회 및 좋아요 756개 개의 좋아요가 있습니다.

검색어 자동 완성 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 광고주 99%가 몰라서 돈쓰는 중입니다. (자동완성어 수작업편, 자동완성어, 자동완성어 등록) – 검색어 자동 완성 주제에 대한 세부정보를 참조하세요

오늘 저희 영상을 보시고, 네이버 자동완성어를
적절히 활용하시면 경쟁령 있게
매출을 올리실 수 있을 겁니다!
자동완성 등록되는 노하우 공개!
미래를 바꾸는 시간, 미바시 채널을 구독해주세요!
#온라인마케팅 #자동완성어 #자동완성어등록 #무료 #마케팅 #키워드

검색어 자동 완성 주제에 대한 자세한 내용은 여기를 참조하세요.

구글 검색어 자동완성 해제 방법(2022년 최신) – 엘비

개인 정보 검색결과 비활성화하기 · 웹 및 앱 활동 사용 중지 설정하기 · 인기 검색어 사용 중지하기 · 추천 검색어 지우기 · 자동완성 검색어 지우기 …

+ 여기에 표시

Source: lbtest.tistory.com

Date Published: 5/3/2022

View: 2784

구글 크롬 검색창에서 자동완성 기능 끄기 – KimsFamily(대니월드)

구글 크롬 검색창에서 자동완성 기능 끄기 · 1. 설정-모양에서 홈버튼표시의 페이지주소를 google.com 으로 입력 · 2. 크롬을 열면 상단에 홈모양이 …

+ 여기를 클릭

Source: kimsfamily.kr

Date Published: 12/6/2021

View: 4596

크롬 자동완성 기능해제 및 삭제 방법 – 대디의 IT공방

1. 검색어 같은 자동완성을 기능을 해제 하기 위해서는 ‘나와 Google의 관계’에 있는 항목 중 ‘동기화 및 Google 서비스’항목을 클릭해 줍니다. 동기화-및 …

+ 자세한 내용은 여기를 클릭하십시오

Source: appadal.tistory.com

Date Published: 2/9/2022

View: 2045

[컨텍스트 자동완성 소개] : 검색어 고객센터

컨텍스트 자동완성은 검색어 자동완성 기능의 진화형이라 할 수 있습니다.​컨텍스트 자동완성은 네이버 로그인 이용자와 유사한 사용자 그룹의 관심사를 빅데이터 기술 …

+ 여기에 보기

Source: help.naver.com

Date Published: 12/21/2022

View: 3718

자동 완성 – 나무위키

한편 포털 사이트에서의 자동완성은 광고의 역할도 수행한다. 연관검색어도 그렇지만 특정한 흐름으로 이용자를 유도할 수 있다. 보통 사람들은 검색창 …

+ 여기에 표시

Source: namu.wiki

Date Published: 12/17/2021

View: 9358

구글 크롬 검색기록 끄기, 자동완성 미리보기 기능 제거 방법

구글 크롬 웹브라우저에서 이전에 검색했던 내용이 웹사이트 여기저기 검색창에서 클릭만 하면 자동완성 형식으로 드롭다운 메뉴 리스트화 되어 미리 …

+ 여기를 클릭

Source: itfix.tistory.com

Date Published: 4/8/2022

View: 5483

연관검색어 및 자동완성 검색어 서비스의 작동 원리와 제공 방식

자동완성 검색어 제외는 검색창에 검색어를 입력할 때 이용자가 찾을 가능성이 높더라도 해당 검색어가 자동으로 추천되지 않도록 기능 상의 제약을 두는 …

+ 여기에 자세히 보기

Source: journal.kiso.or.kr

Date Published: 5/12/2022

View: 4123

검색어 자동완성 기능을 구현하자 – 2 – 프로그래밍

검색어 자동완성 기능에 필요한 데이터를 구축하는 프로그램, 그리고 구축된 데이터를 이용해 추천 검색어를 검색하는 프로그램입니다. 그럼 먼저, 데이터 …

+ 자세한 내용은 여기를 클릭하십시오

Source: programming-tips.tistory.com

Date Published: 5/5/2022

View: 2515

주제와 관련된 이미지 검색어 자동 완성

주제와 관련된 더 많은 사진을 참조하십시오 광고주 99%가 몰라서 돈쓰는 중입니다. (자동완성어 수작업편, 자동완성어, 자동완성어 등록). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

광고주 99%가 몰라서 돈쓰는 중입니다. (자동완성어 수작업편, 자동완성어, 자동완성어 등록)
광고주 99%가 몰라서 돈쓰는 중입니다. (자동완성어 수작업편, 자동완성어, 자동완성어 등록)

주제에 대한 기사 평가 검색어 자동 완성

  • Author: 미바시 Mibasi
  • Views: 조회수 26,173회
  • Likes: 좋아요 756개
  • Date Published: 2021. 1. 15.
  • Video Url link: https://www.youtube.com/watch?v=C7ocwmOVO3w

구글 검색어 자동완성 해제 방법(2022년 최신)

반응형

제가 몇 번 구글에 반복해서 어떤 검색어를 입력했는데 그게 며칠 후에 구글 자동완성 검색어로 돼있습니다. 다른 사람 입력 안 하고 저만 입력하는 키워드라 다른 사람이 검색했을 리 절대 없고요. 구글에 자동 완성 검색어로 되어있습니다.

예시로 치<<입력하면 아래에 치킨으로 검색어 자동 완성되는 거 말하는 것입니다. 혹시나 핸드폰의 검색 기록인가 싶어서 삭제해도 자동완성이더라고요.. 몇 번 검색했다고 이게 가능한지.. 자동완성 시간 지나면 저절로 없어지나요? 없애려면 어떻게 해야 하나요? 다른 컴퓨터로 검색해봐도 확실히 뜨네요. 구글 자동완성 및 인기 검색어 해제하는 방법 없나요? Google 자동 완성 및 인기 검색어 구글 검색어 자동완성 해제 방법 Google 자동완성 및 인기 검색어를 관리하는 방법에 대해 설명합니다. 개인 정보 검색결과 비활성화하기 Google 계정에 로그인한 상태라면 검색창에 추천 검색어나 최근 검색한 단어가 표시될 수 있습니다. 이러한 예상 검색어 및 추천을 받지 않으려면 개인 정보 검색결과를 사용 중지하면 됩니다. 1. 개인 정보 검색결과 페이지를 방문합니다. 2. [개인 정보 검색결과 표시]를 사용 중지합니다. 개인 정보 검색결과를 사용 중지하면 맞춤 예상 검색어나 추천이 표시되지 않습니다. 개인 정보 검색결과 비활성화 웹 및 앱 활동 사용 중지 설정하기 웹 및 앱 활동을 사용 중지하면 Google 검색에서 이전에 검색한 단어 및 검색 기록이 저장되지 않습니다. 꼭 Google 검색이 아니더라도 앱(어플) 입력란의 자동 완성된 단어도 맞춤 설정할 수 있습니다. 웹 및 앱 활동을 확인하고 제어하는 방법 1. 활동 제어로 이동합니다. (Google 계정 관리-데이터 및 개인 정보 보호-활동 및 방문한 장소-기록 설정) 2. [웹 및 앱 활동]을 사용 중지합니다. 웹 및 앱 활동 사용 중지 설정 인기 검색어 사용 중지하기 개인 정보 검색 결과를 사용 중지해도 Google 검색에서 예상 검색어 및 추천이 계속 표시된다면 구글 검색 설정으로 이동하여 인기 검색어를 끌 수 있습니다. 1. 검색 설정으로 이동합니다. 2. '인기 검색어 자동 완성'에서 [인기 검색어 표시 안 함]을 선택합니다. 3. [저장]을 클릭합니다. 인기 검색어 사용 중지 추천 검색어 지우기 Google 계정에 컴퓨터(PC)로 로그인한 상태에서 자동완성 검색어 우측에 X 아이콘이 나타납니다. X 아이콘은 자동완성 검색어 삭제 버튼입니다. 버튼을 눌러 해당 검색어를 지울 수 있습니다. 추천 검색어 지우기 자동완성 검색어 지우기 만약 X 버튼이 보이지 않는다면 자동완성 검색어 위에 마우스 커서를 위치하고 [ Shift + Delete ] 키를 누르면 지워집니다. 구글 계정의 동기화 켜기 상태라면 컴퓨터에 로그인한 상태에서 [ Shift + Delete ] 키를 눌러 자동완성 검색어를 지우면 스마트폰에서도 자동완성 검색어가 없어지게 됩니다. Shift + Delete 이상으로 구글 검색어 자동완성 해제 방법에 대해 살펴보았습니다. 즐거운 하루 보내세요. 감사합니다. 반응형 그리드형

구글 크롬 검색창에서 자동완성 기능 끄기

구글 검색창에서 카카오를 검색하면 아래와같이 표시되고 있습니다.

그래서 해결책을 알아봤는데요!!

1) 크롬 상단에 보면 점으로 세개 표시가 되어 있는게 있어요~ 이걸 클릭!

그리고 아래에 설정을 클릭합니다.

2) 나와 Google의 관계 클릭 – 동기화 및 Google 서비스 클릭

클릭 하신 후 아래에 보시면 다른 Google서비스가 있습니다.

여기에서

검색어 및 URL 자동완성을 해제(왼쪽으로 하면 되요)

향상된 맞춤법 검사를 해제(왼쪽으로)

이렇게 2개를 하시면 검색창 및 URL에서 자동완성되거나 맞춤법을 교정하지 않도록 설정할 수 있습니다.

원래는!!

이렇게 하면 됩니다!!

이렇게 해도 안되면?

설정에 고급- 언어 탭이 있어요!! 여기에서 맞춤법검사를 하지 않음으로 설정해보세요!!

그런데??

이렇게 해도 안되네요?

결론은!!!

방법은 있지만 지금은 구글의 버그로 보여집니다.

구글 고객센터를 보니

support.google.com/chrome/thread/50026467?hl=ko

최근 댓글들을 보니.

결국 위 방법으로 해도 안된다는겁니다!!!!

방법은 없는듯 하고(구글이 버그를 수정할때까지..)

우회적인 방법이 있습니다.

그걸 소개해드릴께요!!

1. 설정-모양에서 홈버튼표시의 페이지주소를 google.com 으로 입력

2. 크롬을 열면 상단에 홈모양이 있습니다. 이걸 클릭하고 사용하시면 문제 없어요!!

제가 자료도 찾아보고 이것저것 테스트해보니깐,

크롬을 처음 오픈하였을때 생기는 버그로 보여집니다.

그리고 새탭을 열어도 동일한 현상이 발생해요!!

그래서 크롬에 저렇게 홈버튼 추가하고..조금 귀찮치만 위에 버튼 한번 클릭해서 사용하시면 됩니다.

또는, 크롬 상단에 주소입력창에서 검색해서 사용하는 방법도 있어요!!

구글이 언제 고쳐줄지 모르니..

일단은 이렇게 써야겠죵?

아니면..

네이버에서 새로나온 브라우저 웨일이나

마이크로소프트에서 나온 에지를 사용해보는것도 방법이 될 수 있겠네요!!!

반응형

크롬 자동완성 기능해제 및 삭제 방법

안녕하세요. 이번 시간에는 크롬 자동완성 기능해제 및 삭제 방법에 대해 자세히 알아보겠습니다. 크롬을 사용하다 보면 로그인 아이디와 패스워드가 자동으로 저장되는 자동완성 기능이 있어서 로그인할 때 저장을 하겠냐는 묻는 메시지가 나오는데 확인 버튼을 클릭하게 되면 해당 사이트에 들어갈 때 자동으로 로그인이 되는 편리한 기능입니다.

그리고 다음 또는 네이버에서 검색했던 내용들도 기록에 크롬 자동완성 기능이 활성화 되어 있어서 기록이 되는데요. 이런 기능이 편리한 부분도 있지만 개인 사생활 노출 때문에 이런 부분이 싫으신 분들도 있으실 텐데요. 크롬의 자동완성 기능은 해제가 쉽고 부분적으로 설정이 가능하기 때문에 알아두시면 좋을 것 같습니다. 그럼 지금부터 크롬 자동완성 기능 해제 방법과 검색 기록 및 URL 기록 삭제 방법을 천천히 알려드리겠습니다.

크롬 자동완성 기능 해제 및 삭제 방법 대표 이미지

크롬 자동완성 기능해제 및 삭제

크롬에서 자동완성 기능을 해제하기 전에 현재 기록되어 있던 자료를 모두 삭제를 해야 합니다. 자동완성 기능해제를 했더라도 이전에 있던 기록이 있기 때문에 검색 기록이나 로그인 자료가 남아 있을 수 있습니다. 그래서 현재까지 기록되어 있던 데이터를 모두 삭제해 줘야 합니다.

크롬 자동완성 기록 삭제

1. 크롬 브라우저를 실행한 후 오른쪽 상단에 있는 점 세 개의 아이콘을 클릭한 다음 ‘설정’을 클릭해 줍니다.

상단 아이콘 클릭 후 설정 메뉴를 클릭합니다.

2. 보이는 브라우저 크기에 따라서 조금 다를 수 있습니다. 왼쪽에 있는 ‘개인정보 및 보안’을 클릭 후 ‘인터넷 사용 기록 삭제’ 항목을 클릭합니다.

개인정보 및 보안에서 인터넷 사용기록 삭제를 클릭합니다.

3. 기본과 고급 탭에서 고급을 선택한 다음 여러 항목을 모두 체크한 후 ‘인터넷 사용기록 삭제’ 버튼을 한번 더 클릭해 줍니다. 그러면 현재 기록되어 있던 모든 기록은 삭제가 됩니다.

고급 옵션을 선택하고 인터넷 사용기록 삭제 버튼을 클릭하여 모든 데이터를 삭제합니다.

크롬 자동완성 기능 해제

모든 기록을 삭제 했으니 이번에는 자동완성 기능을 해제해 보겠습니다.

1. 검색어 같은 자동완성을 기능을 해제 하기 위해서는 ‘나와 Google의 관계’에 있는 항목 중 ‘동기화 및 Google 서비스’항목을 클릭해 줍니다.

동기화 및 google 서비스 항목을 클릭합니다.

2. 검색어 및 URL 자동 완성 설정 부부은 끔으로 변경해 주면 끝입니다.

검색어 및 URL 자동완성 기능 설정을 ‘끔’으로 변경해 줍니다.

3. 이번에는 로그인 자동 완성 기능을 해제하겠습니다. 자동 완성 기능에 비밀번호를 클릭합니다.

자동완성 항목 중 비밀번호를 클릭합니다.

4. 비밀번호 저장 여부 확인과 자동 로그인 기능을 모두 ‘끔’으로 설정해 줍니다.

비밀번호 저장 여부와 비밀번호 확인을 모두 끔으로 설정해 줍니다.

자동 로그인 설정은 모두 해제 할 수 있지만 만약 어떤 특정한 사이트만 들어가고 나머지를 삭제하고 싶다면 하단에 있는 해당 사이트만 삭제하시면 됩니다.

지금까지 크롬에서 자동로그인 기능과 검색 기록을 삭제하는 방법을 알아보았습니다. 공용으로 사용하는 컴퓨터를 사용하기거나 개인 정보 노출이 싫으신 분들은 자동완성 기능 해제 방법을 적용하시면 좋을 것 같습니다.

300×250

구글 크롬 검색기록 끄기, 자동완성 미리보기 기능 제거 방법

구글 크롬 웹브라우저에서 이전에 검색했던 내용이 웹사이트 여기저기 검색창에서 클릭만 하면 자동완성 형식으로 드롭다운 메뉴 리스트화 되어 미리보기 형식으로 보여주는 경우가 있습니다. 물론, 때에 따라서는 이 기능이 편리할 수도 있지만 지극히 개인적인 검색어 내용이 해당 PC를 사용하는 모든 사람에게 보일 수 있다는 데에 문제가 있습니다.

뭐 내용이 아주 일반적이고 시사적인 검색 내용이라면 상관 없는 데, 선정적인 키워드 또는 폭력적인 키워드를 검색했을 경우에 문제 될 수 있습니다.

아래의 이미지에서 미리보기로 보여지는 자동완성용 검색어들이 그 예시로, Free Vector라고 하는 이 사이트에서 입력한 것이 아니라 다른 사이트에서 검색어로 입력했던 내용입니다.

크롬의 검색어 자동완성 미리보기 기능

구글 검색창 뿐만이 아니라 개별 사이트들의 여러 가지 용도의 검색어 입력 폼을 클릭하면 이전에 검색했던 키워드가 크롬의 자동완성 기능으로 인해 노출되는 것은 문제가 있을 수 있습니다.

해결방법은 간단합니다.

1. 크롬 설정 > 개인 정보 및 보안 > 인터넷 사용 기록 삭제를 클릭합니다.

2. 고급 탭에서 이 부분만 수정하고 싶다면 다른 체크 표시를 모두 해제하고 ‘양식 데이터 자동 완성’ 부분만 체크하고 아래에 있는 인터넷 사용 기록 삭제 버튼을 눌러 줍니다.

크롬, 양식 데이터 자동 완성 기능 제거

이 작업 내용은 브라우저를 재시작할 필요없이 바로 적용됩니다.

이제 이전 검색어 자동 완성 미리 보기에 내용이 나타나지 않습니다. 다만, 이 작업은 수동으로 해 준 현재 시점까지의 데이터만 삭제하는 방법이므로 다시 자동 완성용 데이터들이 쌓이기 시작하게 됩니다.

만일, 이 작업을 자동으로 이루어지도록 하고 싶을 경우에는 아래와 같은 작업을 해줍니다.

1. 크롬 설정 > 개인정보 및 보안 > 쿠키 및 기타 사이트 데이터를 클릭합니다.

2. 크롬을 종료할 때 쿠키 및 사이트 데이터 삭제 우측의 버튼을 눌러 이 기능을 활성화합니다.

크롬 종료시 자동으로 데이터, 쿠키 삭제 기능 활성화

이제 크롬 브라우저를 사용하고 난 다음 종료할 때마다 자동으로 사용 데이터가 제거되게 됩니다.

반응형

연관검색어 및 자동완성 검색어 서비스의 작동 원리와 제공 방식

1. 연관검색어

1) 의미

포털에 따라 연관검색어, 관련검색어 등 상이한 명칭으로 제공되고 있는 ‘연관검색어’는 사용자가 특정 단어를 검색한 후 연이어 많이 검색한 검색어를 자동 로직에 의해 추출하여 제공하는 서비스다. 이용자에게 처음 검색한 단어에 대해 관련 검색어를 제공함으로서 확장된 주제 또는 보다 상세한 내용을 검색할 수 있도록 돕는 역할을 하며, 일반 사용자들이 검색하는 가장 최신의 이슈가 노출되기도 한다.

2) 추출 방법

검색 서비스 이용자는 필요한 정보를 확인하기 위해 검색어를 여러 가지 형태로 변경해 가며 검색을 하는데, 검색 서비스 제공자는 이러한 연이은 검색어 입력 패턴을 수집하여 검색어 간의 관계를 수식에 의해 분석한 후 연관검색어를 추출하게 된다. 검색어 입력 패턴을 분석할 때는 검색어의 입력 시간, 사용량 등 여러가지 요소를 복합적으로 고려한다.

3) 노출 기간

연관검색어는 날마다 새로운 데이터로 교체되며, 이용자의 검색 빈도와 검색 패턴이 끊임없이 변하기 때문에 연관검색어도 유동적으로 변화하고 있다. 따라서, 한번 노출된 검색어라 하더라도 계속 노출되는 것은 아니며, 이용자의 검색 빈도가 줄어들면 자연적으로 노출되지 않게 된다. 만일 지속적으로 동일한 검색어가 연관검색어로 노출된다면, 많은 이용자들이 계속해서 연이어 검색어로 사용하고 있다는 의미가 된다.

4) 노출 영역

연관검색어는 포털에서 제공하는 통합검색과 분야별 검색(탭 검색) 화면의 상단, 하단, 또는 우측 영역에 노출되며, 최근에는 모바일 통합검색에서도 연관검색어 서비스를 제공하고 있다. 연관검색어 영역은 기본적으로 2줄까지 노출되며, 포털에 따라 ‘더보기’ 기능을 제공함으로써 더 많은 연관검색어를 확인할 수 있도록 하고 있다. 노출되는 연관검색어의 수는 검색창에 입력한 검색어의 이용량에 따라 유동적으로 변화한다.

<네이버의 ‘연관검색어’>

<다음의 ‘관련검색어’>

<네이트의 ‘관련검색어’>

5) 제외 기준

일반적으로 KISO 회원사들이 제공하는 연관검색어 서비스는 이용자의 관심사를 그대로 반영하기 위해 내용을 임의로 조정하지 않는 것을 원칙으로 하고 있으며, 검색어를 추가하거나 편집할 수 없다. 다만, 다음과 같이 해당 검색어를 노출하는 것이 관련 법령에 위배될 소지가 있는 경우 예외적으로 연관검색어 노출을 제외하기도 한다.

① 개인정보 : 검색어 및 해당 검색 결과에 개인정보가 노출될 경우

② 명예훼손 : 검색어 및 해당 검색 결과에 대해 개인 또는 단체에서 정당한 사유로 명예훼손 관련 삭제를 요청할 경우

③ 성인/음란성 : 검색어 및 해당 검색 결과가 성인/음란성 정보를 노출하는 경우

④ 불법/범죄/반사회성 : 검색어 및 해당 검색 결과가 불법/범죄/반사회적 정보를 노출하는 경우

⑤ 기타 법령에 따른 행정기관 및 사법기관의 삭제 요청이 있는 경우 등

6) 선거 기간 중 연관검색어 노출

KISO의 ‘선거기간 중의 연관검색어 및 자동완성 검색어 목록에 관한 정책 결정(2011.11.5)’ 및 이를 일부 수정하여 통합된 ‘선거관련 인터넷 정보서비스 기준에 관한 정책(2012.2.16)’이 결정된 이후에는, ‘후보자 등’에 관한 명예훼손성 연관검색어의 삭제 요청이 있을 경우, 이용자가 후보자 등의 도덕성이나 청렴성을 검증하기 위해 다양한 정보에 접근할 권리를 보장하기 위해 삭제 기준을 더욱 엄격하게 적용하게 되었다.

회원사에 따라 선거기간 중에 선거 및 후보자 등과 관련된 검색어로 검색할 경우, 기존 연관검색어 외에 검색 결과 상단에 후보자 등의 이름과 관계없이 중앙선거관리위원회에서 제공하는 정보를 기반으로 표준화된 형식으로 선거 관련 연관검색어를 제공하기도 한다.

<특정 후보명 입력시 표준화된 ‘선거정보’ 연관검색어 노출 사례>

2. 자동완성 검색어

1) 의미

자동완성은 검색서비스 이용자의 검색 편의를 위해 검색창에 입력되는 검색어의 유형을 분석하여 많은 수의 사용자가 자주 찾는 검색어를 자동으로 완성해서 제시해 주는 서비스다. 자동완성 검색어를 제공하는 가장 큰 이유는 이용자가 자주 찾는 검색어를 끝까지 입력하지 않고 원하는 검색어의 일부만 입력해도 원하는 검색어를 선택할 수 있도록 함으로써 정보 탐색 비용을 줄여주는 것이다. 일부 포털에서는 이러한 편의 기능을 더욱 제고하기 위해 자동완성 검색어를 확장하거나, 초성입력만으로도 검색어가 제시되어 모든 키워드들을 다 칠 필요가 없도록 해 준다.

2) 작동 원리 및 서비스 제공 방식

한글 검색어의 경우, 입력 특성을 고려하여 이용자가 입력하는 단어를 포함하는 검색어를 좌측부터 ‘자소1)’ 단위로 제공한다. 이용자가 많이 찾는 검색어를 자동 로직에 의해 추출하여 제공하므로 노출되는 검색어가 수시로 변화할 수 있다. KISO 회원사가 제공하는 자동완성 기능은 인위적인 조정이나 개입을 하지 않는 것을 원칙으로 하고 있으므로 검색어를 추가하거나 편집할 수 없다.

3) 노출 영역

자동완성 기능은 검색창에 드롭다운 형태로 제공되며, 이용자 선택에 따라 이 기능을 활성 또는 비활성 상태로 설정할 수 있다. 검색어 입력시 노출되는 자동완성 검색어의 수는 검색창에 입력한 검색어의 이용량에 따라 유동적으로 변화한다.

4) 제외 기준

KISO 회원사들이 제공하는 자동완성 서비스는 연관검색어와 마찬가지로 그 구성을 임의로 조정하지 않는 것을 원칙으로 하고 있으며, 해당 검색어를 노출하는 것이 관련 법령에 위배될 소지가 있는 경우 예외적으로 자동완성을 제한하기도 한다.

자동완성에서 검색어를 제외하는 것은 검색결과에서 결과값의 노출을 제한하는 것과는 차이가 있다. 자동완성 검색어 제외는 검색창에 검색어를 입력할 때 이용자가 찾을 가능성이 높더라도 해당 검색어가 자동으로 추천되지 않도록 기능 상의 제약을 두는 것으로, 자동완성에서 제외되더라도 해당 검색어를 끝까지 입력하고 검색했을 때 검색결과는 정상적으로 노출된다.

KISO의 정책결정에 따라 선거기간 중에는 ‘후보자 등’의 요청에 의한 자동완성 검색어의 제외 기준을 더욱 엄격하게 적용하고 있다. KISO 회원사들은 검색어 자동완성 기능이 이용자에게 편의성을 제공하는 것 외에 사회적 의제 설정 기능 또한 일부 지니게 된 점을 감안해 공정한 정보제공이 되도록 하고 있는데, 이번 선거 관련 정책결정도 이러한 공정성 확보를 위한 회원사의 노력이 반영된 결과로 볼 수 있다.

1) 문자 체계에서 음소를 표시하는 최소의 변별적 단위로서의 문자 혹은 문자 결합. ‘자동’이라는 단어의 자소는 ‘ㅈㅏㄷㅗㅇ’으로 구성된다. [본문으로]

검색어 자동완성 기능을 구현하자 – 2

안녕하세요. 지난 시간에 이어 검색어 자동완성 기능 구현에 대해 알아보도록 하겠습니다.

지난 시간에는 한글을 자동완성 기능 구현에 적합한 형태의 자소 단위로 변환하는 방법에 대해 알아보았습니다. 이번 시간에서는, 지난번에 만들었던 모듈을 이용해, 사용자가 검색어를 입력하면, 입력한 검색어로 시작되는 추천 검색어들을 출력해 주는 프로그램을 만들어 보도록 하겠습니다. 여기까지 구현된다면, 남은 부분은 AJAX를 이용해 웹브라우져로 보여주는 것 밖에 없습니다.

그럼 자세한 부분을 설명하기 앞서, 먼저 오늘 만들어 볼 프로그램의 개략적인 흐름에 대해서 알아보도록 하겠습니다.

오늘은 두 개의 프로그램을 만들어 볼 것입니다. 검색어 자동완성 기능에 필요한 데이터를 구축하는 프로그램, 그리고 구축된 데이터를 이용해 추천 검색어를 검색하는 프로그램입니다. 그럼 먼저, 데이터를 구축하는 프로그램에 대해서 알아보도록 하겠습니다.

검색어 자동완성 기능에 필요한 데이터를 구축하는 프로그램에는 먼저 추천 검색어들을 지정해 주어야 하겠죠? 추천 검색어들은 어떻게 지정할까요? 가장 간단히 생각하면, 관리자가 추천 검색어 목록을 넘겨주는 것이겠죠. 하지만 관리자가 수많은 추천 검색어들을 관리할 수 없다면, 사용자가 입력한 검색어(검색 버튼을 클릭해 검색을 한)를 검색된 빈도수와 함께 DB에 저장한 후, 빈도수가 높은 순서대로 추천 검색어로 출력이 되도록 하는 방법이 있을 것입니다. 그래서 우리는 다음과 같은 텍스트 파일을 이용해 추천 검색어를 지정하도록 할 것입니다.

word_list.txt

괴물 300

국민은행 40

기상청 50

곰플레이어 다운로드 10

각설탕 20

윤도현 밴드 24

이경민 100

구글 23

김옥빈 사진 40

다음 40

다나와 20

해수욕장중 가장 괜찮은 곳 30

해신 15

각 줄에서, 첫 번째 나오는 단어는 추천 검색어에 포함될 수 있는 후보 단어들입니다. 그리고 두 번째 나오는 숫자는 첫 번째 나오는 단어의 빈도수 입니다. 예를 들어, ㄱ을 입력하면, 괴물, 국민은행, 기상청 등과 같이 ㄱ으로 시작되는 검색어들이 추천되겠지만 보여지는 순서는 두 번째 나오는 숫자가 높은 순서대로 보여지게 됩니다. 또 보여지는 추천 검색어 개수를 제한하고 싶을 때, 빈도수가 높은 순대로 정렬되어 상위 N개만 보여지도록 될 것입니다.

word_list.txt 파일에 추천 검색어 목록을 지정한 후, 프로그램을 실행시키면, 이 파일에서 추천 검색어와 숫자를 읽어서 추천 검색어를 자소 단위로 분리하여 숫자와 함께 자소 단위로 정렬하여 stl의 vector에 입력합니다. 모든 추천 검색어를 map에 입력한 후, map에서 자소 단위로 분리된 추천 검색어와 숫자를 하나씩 읽어온 후, 읽어온 추천 검색어의 자소를 하나씩 읽으면서 읽어온 자소는 B-TREE의 키 부분에, 추천 검색어는(자소 단위로 분리되지 않은) 데이터 부분에 넣습니다. 이런 과정을 모든 추천 검색어에 대해 반복하면, 검색어 자동완성 기능에 필요한 모든 데이터를 구축하게 됩니다.

여기에서 map과 B-TREE라는 두 개의 자료구조가 나오네요. 두 개의 자료구조에 대해 처음 접하시는 분들도 있을 테니, 간단히 설명하도록 하고 넘어가도록 하겠습니다. 먼저 map을, 설명하기 앞서 stl에 대해 설명해야 겠네요.

stl(standard template library)은 우리들이 흔히 필요할 수 있는 string, linked list, vector, map, set 등과 같은 자료구조를 편히 쓸 수 있도록 구현해 놓은 표준 라이브러리를 말합니다. 그 중에서 우리가 쓸 vector는 배열(array)과 비슷한 개념이지만, 일반 배열에 비해서 더 많은 정보를 제공해 준다는 점, vector에 크기는 동적으로 변할 수 있다는 점에서 배열보다 더 편리하게 사용할 수 있습니다.

B-TREE는 데이터를 정렬해서 관리하는데 그 양이 방대해서 메모리에 모두 올려놓고 관리할 수 없을 때, 하드 디스크를 액세스하는 횟수를 최대한 줄이며, 데이터를 정렬 상태를 유지하면서 삽입과 삭제를 할 수 있도록 구현된 자료구조입니다. 우리가 사용할 B-TREE의 노드는 키 부분과 데이터를 가리키는 포인터로 이루어져 있습니다. 키는 문자열이 들어가고 데이터를 가리키는 포인터에는 int형 숫자가 들어갑니다.

이상으로 간단히 vector와 B-TREE에 간단히 대해 알아보았습니다. 그럼 이제 프로그램의 소스를 살펴보면서 진행하도록 하겠습니다.

먼저 word_list.txt에 파일에서 추천 검색어와 빈도수를 읽어서 자소 단위로 분리하여 vector에 넣는 코드를 살펴 보도록 하겠습니다.

typedef struct{

int org_str;

int dsbl_str;

int freq;

}DSBL_WORD;

위 구조체는 하나의 추천 검색어에 대한 정보를 나타내기 위해 쓰입니다.

멤버 변수 중 org_str은 원본 문자열을 나타내고. dsbl_str은 자소 단위로 분리된 문자열을, freq는 빈도수를 나타냅니다. 그런데 문자열을 나타내는 변수가 좀 특이하네요? 문자열은 char형 배열이나 포인터를 이용해 나타내야 하는데 int형 변수를 사용하고 있습니다. 이것은 org_str이나 dsbl_str 변수가 문자열을 직접적으로 가리키고 있는 것이 아니라, 실제 문자열은 커다란 버퍼에 저장해 놓고, 저장되어 있는 위치에서부터 버퍼가 시작되는 곳까지의 거리(offset) 저장하고 있는 것입니다. 이렇게 구현하는 이유는, 메모리를 절약하기 위해서입니다. 즉, 문자열의 길이가 추천 검색어마다 다를 수 있으므로, 모든 검색어를 포함할 수 있도록 충분히 크게 char org_str[50]과 같이 배열로 선언을 하면, 많은 공간이 낭비될 것입니다. 그리고, 검색어의 길이를 특정 길이로 제한해야 하죠. 또 배열에 저장되어 있는 주소를 직접 가리키지 않고 offset 형태로 저장하는 이유는, 나중에 파일로 저장되어 프로그램이 종료되고 다시 실행되어 파일에서 문자열을 버퍼로 읽어왔을 때에도 값이 유효하도록 하기 위해서 입니다.

커다란 버퍼에 실제 문자열을 입력한다고 하였는데, 이런 버퍼의 관리를 편하게 하기 위해 CBufQue라는 클래스를 만들어서 사용합니다. CBufQue 클래스의 사용법은 매우 간단한데, 생성자의 인자로는 처음 확보되는 버퍼의 크기를 지정합니다. 그리고 enqueue라는 함수를 통해 문자열을 버퍼에 추가합니다. enqueue 함수는 문자열이 입력된 위치를 offset 형태로 반환하기 때문에, 이 값을 받아서 저장하면 됩니다. 실제 문자열을 나타낼 때는 toStr이라는 함수에 enqueue에서 반환한 값을 넘겨주면 됩니다. 남아있는 버퍼의 크기보다 입력된 문자열의 크기가 더 클 경우에는 자동으로 버퍼의 크기를 늘려줍니다. 그리고 write와 read 함수를 이용해 버퍼의 내용을 파일에 쓰거나, 파일에서 읽어옵니다.

아래 코드를 보면 g_wbuf와 g_dwbuf 두 개의 CBufQue 인스턴스가 선언되고 있습니다. g_wbuf에는 추천 검색어의 원래 문자열이 저장되고, g_dwbuf에는 자소 단위로 분리된 문자열이 저장이 됩니다.

vector g_wlist;

const int MAX_SGG_WORD_LEN = 1000;

CBufQue g_wbuf(1024);

CBufQue g_dwbuf(1024);

int read_word(FILE* word_list_fp,char* word,int* freq)

{

if(fgets(word,MAX_SGG_WORD_LEN,word_list_fp) == NULL)

return FALSE;

int len = strlen(word);

char freq_buf[16];

int i = 0;

while(–len)

{

char w = word[len];

if(w >= ‘0’ && w <= '9') freq_buf[i++] = w; else if(i > 0)

break;

}

*freq = 0;

freq_buf[i] = NULL;

if(i > 0)

{

strrev(freq_buf);

*freq = atoi(freq_buf);

}

if(len == 0)

len = strlen(word);

while(len > 0 && word[len] == ‘

‘ || word[len] == ‘ ‘ || word[len] == ‘\t’)

len–;

if(len == 0)

word[0] = 0;

else

word[len + 1] = 0;

return TRUE;

}

위 read_word 함수는 텍스트 파일에서 한 줄을 읽어 추천 검색어는 word에 빈도수는 freq에 저장한 후 TRUE를 리턴합니다.

bool comp_dsbl_word(DSBL_WORD& w1,DSBL_WORD& w2)

{

if(strcmp(g_dwbuf.toStr(w1.dsbl_str),g_dwbuf.toStr(w2.dsbl_str)) > 0)

return false;

else

return true;

}

int read_and_disassemble_words()

{

FILE* word_list_fp;

word_list_fp = fopen(“word_list.txt”,”rt”);

char word[MAX_SGG_WORD_LEN];

int freq;

while(read_word(word_list_fp,word,&freq))

{

if(word[0])

{

char out[1024];

dsbl_string(word,out,1024,NULL);

DSBL_WORD w;

w.org_str = g_wbuf.enqueue(word);

w.dsbl_str = g_dwbuf.enqueue(out);

w.freq = freq;

g_wlist.push_back(w);

}

}

fclose(word_list_fp);

sort(g_wlist.begin(),g_wlist.end(),comp_dsbl_word);

return TRUE;

}

위 read_and_disassemble_words의 while 문에서 추천 검색어와 빈도수를 읽어서 문자열은 자소 단위로 분리하여 DSBL_WORD 구조체에 값들을 입력한 후 벡터에 추가하는 것을 볼 수 있습니다. while 문을 다 돌고 나면 텍스트 파일의 모든 추천 검색어와 빈도수가 g_wlist라는 벡터에 저장이 됩니다.

함수의 마지막 부분에 나타나는 sort 함수는 g_wlist의 원소들을 분리된 자소 순서대로 정렬하기 위해서 사용됩니다. 정렬을 하는 이유는 나중에 설명하도록 하겠습니다.

텍스트에 있는 내용을 모두 메모리에 올렸으니, 이제 자동완성 기능에 필요한 형태로 데이터를 구축하는 일만 남았습니다. 데이터를 구축하는 방법에 대해 알아보기 전에, 힙과 B-TREE의 사용법에 대해서 간단히 알아보도록 하겠습니다. 힙에 대해선 따로 설명을 안 해드렸었네요. 그럼 먼저 힙에 대해서 알아보도록 하겠습니다.

힙(heap)은 자료구조 중에 하나로, 역시 데이터를 정렬하는데 쓰입니다. 1000개의 정렬 가능한 데이터가 있다고 합시다. 그 중에서 우리는 상위 높은 정렬 값을 가지는 상위 10개의 데이터만 필요합니다. 만약 배열과 퀵소트 알고리즘을 이용한다면, 배열에 1000개의 데이터를 넣어두고, 모든 데이터를 정렬을 한 후 상위 10개의 데이터만을 가져올 수 있습니다. 하지만 상위 10개의 데이터만을 필요하는 상황에서 이것은 메모리와 CPU를 낭비하는 일입니다. 상위 10개를 제외한 990개의 데이터도 모두 정렬하기 때문이죠. 바로 이럴 때 사용하는 자료구조가 힙(heap)입니다. 힙에 데이터를 추가하면 상위 10개 까지만 데이터를 정렬 상태로 유지합니다. 1000개의 데이터를 힙에 모두 추가하면, 마지막에는 상위 10개의 데이터만 정렬되어서 남게 되죠. 물론 여기에서 말하는 데이터의 개수 10은 유동적인 것입니다. 힙이나 B-TREE를 실제 프로그램에서 사용하기 위해서는, 알고리즘을 연구해서 직접 만들어도 되겠지만, 오픈되어 있는 소스를 가져다 쓰는게 가장 무난합니다. 제가 쓰고 있는 소스도 물론 오픈되어 있는 소스를 가져다 약간 편집해서 쓰고 있는 것이구요. 그럼 이 프로그램에서 사용하고 있는 힙과 B-TREE의 사용법에 대해서 간단히 설명하도록 하겠습니다.

힙을 사용하기 위해서는 먼저, heap.h 파일을 인클루드 하여야 합니다.

그리고 다음과 같은 함수를 이용해 힙을 사용합니다. 각 함수에 대한 설명은 소스에 달려있는 주석으로 대체하도록 하겠습니다.

/** 처음 힙을 초기화 시켜줄 때 호출한다.

힙을 사용하기 전 반드시 호출하여야 한다.

@param heap : HEAP 으로 선언한 변수의 주소를 넘겨준다.

@param max_size : 힙에 들어갈 수 있는 최대 원소 개수

@param compare : 각 원소들을 비교하는 함수 포인터

*/

void heap_init(HEAP *heap,int max_size,int (*compare)(const void *key1, const void *key2));

/** 다 사용한 힙을 해제한다.

*/

void heap_destroy(HEAP *heap);

/** 힙을 비운다.

힙 안에 있는 원소의 개수를 0으로 초기화한다. 메모리는 해제하지 않는다.

*/

void heap_reset(HEAP *heap,int max_size,int (*compare)(const void *key1, const void *key2));

/** 힙에 원소를 추가한다.

*/

int heap_insert(HEAP *heap, void *data);

/** 힙에 모든 원소를 추가하였으면, 반드시 이 함수를 호출해서 마지막 정렬 작업을 하여야 한다.

*/

void heap_final(HEAP* heap);

그럼 다음으로 B-TREE의 사용법에 대해서 알아보겠습니다.

B-TREE를 사용하기 위해서는 flexible_bplus.h 파일을 인클루드 해줍니다.

그리고 다음과 같은 함수들이 주로 쓰입니다. 여기서도 사용하고 있는 함수는 다음에 설명하고 있는 함수가 다 입니다.

// B-TREE 파일을 열 때 호출하는 함수입니다.

int open_index(char *,IX_DESC *, int);

// B-TREE 파일을 만들 때 호출하는 함수입니다.

int make_index(char *,IX_DESC *, int);

// 다 사용한 B-TREE 파일을 닫을 때 호출하는 함수입니다.

int close_index(IX_DESC *);

// B-TREE에 키를 추가할 때 사용합니다.

int add_key(void *, IX_DESC *);

// B-TREE에서 키를 찾을 때 사용합니다.

int find_key(void *, IX_DESC *);

함수의 구체적인 사용법은 소스를 보면서 알아보겠습니다.

지금까지 B-TREE와 힙의 사용법, 그리고 텍스트 파일의 추천 검색어를 벡터로 옮기는 과정까지 살펴보았습니다. 그럼 이제 자료를 적절히 구축하는 일만 남았네요. 크게 키 부분과, 데이터 부분으로 나눕니다.

키 부분은 B-TREE를 사용하여, 자소 단위로 분리된 문자열이 들어갑니다. 예를 들어, “괴물, 감기” 와 같은 추천 검색어가 있다고 하면, 이것은

각각 “ㄱ ㅗ ㅣ ㅁ ㅜ ㄹ’, “ㄱ ㅏ ㅁ ㄱ ㅣ” 와 같이 분리될 것입니다. 웹 브라우저에서 사용자가 ‘ㄱ’을 입력한다면 위의 단어들이 모두 출력이 되어야 합니다. 그렇기 하기 위해서 키 부분에는 ‘ㄱ’을 넣고 이 키와 연결된 데이터에는 출력할 문자열을 넣어둡니다. 바로 “괴물, 감기”가 되겠죠? 사용자가 “ㄱㅗ”를 입력하였을 때는 “괴물”이 출력이 되어야 합니다. 그래서 키 부분에 “고”를 입력하고 키에 연결된 문자열에는 “괴물”을 넣어줘야 합니다. ‘괴물’, ‘감기’ 두 단어에 대해서만 분석을 하였을 때는 다음과 같은 데이터가 구축이 됩니다.

키 부분 데이터 부분 ㄱ ㄱㅏ ㄱㅏㅁ ㄱㅏㅁㄱ ㄱㅏㅁㄱㅣ ㄱㅗ ㄱㅗㅣ ㄱㅗㅣㅁ ㄱㅗㅣㅁㅜ ㄱㅗㅣㅁㅜㄹ 괴물,감기 감기 감기 감기 감기 괴물 괴물 괴물 괴물 괴물

표 1

B-TREE에 키는 ENTRY라는 구조체로 표현이 됩니다.

typedef struct

{

RECPOS idxptr; /** points to lower index level */

RECPOS recptr; /** points to data record */

char key[MAXKEY];/** start of record key */

}ENTRY;

ENTRY 구조체는 위와 같은데, 여기에서 key 멤버 변수에 바로 위에서 설명한 자소 단위로 분리된 문자열이 들어갑니다. 그리고 recptr에는 원본 문자열이 저장되어 있는 위치가 저장됩니다. 원본 문자열도 하나의 파일에 저장이 되는데, 이 파일에는 실제 문자열이 들어가는 것이 아니라, 문자열은 또 다른 파일에 저장해 놓고, 그 위치만을 기록하고 있습니다. 이렇게 하는 이유는 데이터가 중복되기 때문에 공간의 낭비를 막기 위해서죠.

자 그럼 다시 파일로 구분을 해서 알아보도록 하겠습니다.

자동완성 기능에 필요한 자료 구축은 다음과 같은 3개의 파일로 이루어집니다.

sgg_word_list.idx -> 위에서 설명한 B-TREE가 저장되는 파일입니다.

sgg_word_list.dat -> 위의 표에서 데이터 부분이 저장되는 파일입니다.

word_buf.dat -> 문자열의 내용이 저장되는 파일입니다.

이 파일들의 구조는 예를 들어서 설명하는게 가장 좋을 것 같네요. ‘괴물’, ‘감기’, ‘가족’ 이 세 개의 단어를 가지고 자동완성 기능 데이터를 구축하면 위 파일들은 개략적으로 다음과 같은 내용을 갖습니다.

sgg_word_list.idx

[ENTRY]entry_count

ENTRY = char key[1000], int data_point

entry_count : int형, 자소 단위로 분리된 모든 추천 검색어 개수, 표 1에서의 entry_count는 10 입니다.

data_point : int형, sgg_word_list.dat에 표 1의 데이터 부분이 저장되는데, sgg_word_list.dat에 저장되는 위치를 나타낸다. 그림 1에서 화살표로 표현된다.

sgg_word_list.dat

[WORD_LIST] entry_count

WORD_LIST = nWord, [word_point]nWord

nWord : int형, 저장되는 word_point의 개수를 나타낸다.

word_point : int형, word_buf.dat 파일에 문자열이 저장되어 있는 위치를 가리킨다.

word_buf.dat

[WORD]word_count

WORD : 문자열(NULL 포함), 실제 추천검색어

그림 1

그림으로 나타내면 위와 같습니다.

그럼 위와 같이 생성한 데이터를 실제 어떻게 사용하는지 살펴보도록 하겠습니다. 예를 들어서, 사용자가 ‘ㄱ’을 입력했을 때, sgg_word_list.idx 파일에서 ‘ㄱ’이 있는지 찾아볼 것입니다. 있으면, sgg_word_list.dat 파일을 가리키고 있는 부분을 가져와서, sgg_word_list.dat의 파일 포인터를 방금 읽어온 위치로 변경합니다. 그리고, 4바이트 만큼 읽어서 int형 변수 nWord에 넣습니다. 그러면, nWord에는 사용자가 ‘ㄱ’을 입력했을 때 추천해 줄 수 있는 추천 검색어의 개수가 들어가 있습니다. 위의 예에서는 3이 되겠죠? 그러면 이제 실제 추천 검색어가 저장되어 있는 위치를 3개만큼 읽어옵니다. 0, 5, 10이 되겠죠? 다시 word_buf.dat 파일의 0번째 위치에서 NULL을 만날때까지 문자열을 읽어옵니다. 바로 ‘감기’를 읽어오는 것입니다. 그 다음에는 word_buf.dat의 5번째 위치에서 문자열을 읽어오면, ‘가족’, 다음에는 ‘괴물’을 읽어올 수 있을 것입니다. 이렇게 읽어온 문자열을 출력해 주면 되는 것입니다. 개념적으로 설명하면 위와 같고, 실제 구현은 조금 다르게 되어 있습니다.

그러면, 실제 그림 1과 같이 데이터를 구축하는 소스를 보도록 하겠습니다.

소스에 달려있는 주석으로 설명을 대체하도록 하겠습니다.

/** 자동완성단어 리스트와 자소를 실제 파일에 쓴다.

@param dw_str : 자소단위로 분리된 단어

@param heap : dw_str에 제시되는 단어리스트, 단어의 내용이 저장되어 있는 위치가 저장된다.

@param ix : 자소단위로 분리된 단어가 기록되는 B-TREE

@param fp : 제시되는 단어리스트가 저장되는 파일 포인터

*/

int add_to_sgg_word_list(char* dw_str,HEAP* heap,IX_DESC* ix,FILE* fp)

{

static int file_size = 0;

ENTRY e;

strcpy(e.key,dw_str);

e.recptr = file_size;

add_key(&e,ix);

for(int i=0;isize;i++)

{

int index = (int)heap->tree[i];

DSBL_WORD& w = g_wlist[index];

g_word_indice[i] = w.org_str;

}

fwrite(&heap->size,sizeof(int),1,fp);

fwrite(g_word_indice,sizeof(int),heap->size,fp);

file_size += sizeof(int) + sizeof(int) * heap->size;

return TRUE;

}

/** 생성된 g_wlist 를 이용해, 자동완성단어 리스트를 만든다.

“ㄱㅏㄴ” 이런 부분이 키 부분이 되고, 데이터 부분은 왼쪽의 자소를 포함하고 있는 단어들 중

빈도수가 가장 높은 N개를 뽑아, 이 단어들이 g_wlist에서 갖는 인덱스 리스트가 된다.

데이터부분은 N(int), index(int) * N 와 같은 형식으로 저장된다.

키를 저장하는 파일이 sgg_word_list.idx 이고, 데이터를 저장하고 있는 파일이 sgg_word_list.dat

이다. 이 함수를 호출하면, 두 개의 파일이 새로 생성된다.

*/

int make_suggest_word_list()

{

HEAP heap;

IX_DESC ix;

make_index(“sgg_word_list.idx”,&ix,FALSE);

FILE* fp = fopen(“sgg_word_list.dat”,”wb”);

heap_init(&heap,MAX_SGG_WORD,comp_sgg_word);

int size = g_wlist.size();

//단어리스트에 있는 모든 단어에 대해여…

for(int i=0;i

{

int mlen;

//dw에는 i번째 단어의 자소가 들어간다.

char* dw = g_dwbuf.toStr(g_wlist[i].dsbl_str);

printf(“%s %d

“,g_wbuf.toStr(g_wlist[i].org_str),g_wlist[i].freq);

if(i == 0)

mlen = 0;

else

mlen = get_match_len(g_dwbuf.toStr(g_wlist[i-1].dsbl_str),dw);

int dwlen = strlen(dw);

for(int len = mlen+1;len <= dwlen;len++) { heap_reset(&heap,0,NULL); for(int j = i; j < size;j++) { //dw2에는 j번째 단어의 자소가 들어가는데, j는 i에서부터 size까지이다. //단 dw2가 dw를 포함하고 있을때까지 j가 증가한다. //다시 말하면, dw를 포함하는 단어를, dw에 대한 제시어 후보 리스트에 추가한다고 생각하면 된다. char* dw2 = g_dwbuf.toStr(g_wlist[j].dsbl_str); if(!memcmp(dw,dw2,len)) heap_insert(&heap,(void*)j); else break; } heap_final(&heap); char temp = dw[len]; dw[len] = NULL; add_to_sgg_word_list(dw,&heap,&ix,fp); dw[len] = temp; } } heap_destroy(&heap); g_wbuf.write("word_buf.dat"); close_index(&ix); fclose(fp); return TRUE; } 여기까지, 데이터를 어떻게 구축해야 되는지에 대해서 알아보았습니다.

키워드에 대한 정보 검색어 자동 완성

다음은 Bing에서 검색어 자동 완성 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 광고주 99%가 몰라서 돈쓰는 중입니다. (자동완성어 수작업편, 자동완성어, 자동완성어 등록)

  • 온라인마케팅
  • 연관검색어
  • 자동완성어등록
  • 자동완성어
  • 네이버광고
  • 네이버마케팅
  • 검색광고
  • 광고
  • 키워드광고
  • 네이버자동완성어
  • 온라인홍보
  • 온라인광고
  • 온라인마케팅강의

광고주 #99%가 #몰라서 #돈쓰는 #중입니다. #(자동완성어 #수작업편, #자동완성어, #자동완성어 #등록)


YouTube에서 검색어 자동 완성 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 광고주 99%가 몰라서 돈쓰는 중입니다. (자동완성어 수작업편, 자동완성어, 자동완성어 등록) | 검색어 자동 완성, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment