Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

hangul-search

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hangul-search - npm Package Compare versions

Comparing version 1.4.0 to 1.4.1

2

package.json
{
"name": "hangul-search",
"version": "1.4.0",
"version": "1.4.1",
"description": "Json객체에서 한글 검색을 수행. 한글 초성 검색을 지원. Korean search within JSON objects. Supports Korean initial consonant search.",

@@ -5,0 +5,0 @@ "main": "src/index.js",

@@ -14,5 +14,8 @@ ## hansearch

- 한글 초성 검색을 지원합니다.
- 기본적으로 exact matching 으로 동작합니다.
- 특수문자에 대한 검색을 지원합니다. (Contributions by [hwahyeon](https://github.com/hwahyeonhttps:/))
- 마지막 입력 문자를 분해하여 다음 문자열 검색에 사용합니다. 예) "많"을 입력한 경우 "만화" 도 함께 검색됩니다.
- 사용자 입력 그대로 exact matching 검색이 가능합니다. (mode:"exact" 옵션항목 참고)
- 기본적으로 자음 분해 결합을 통해 사용자의 입력 실수 대응 및 예측 검색을 수행합니다. 예) "얹"을 입력한 경우 "언제나"가 검색 결과로 도출.
- 마지막 문자의 홑받침을 다음 문자 검색에 사용합니다. 예) "국"을 입력한 경우 "_국_" 와 "_구ㄱ_"로 검색을 수행.
- 마지막 문자의 겹받침을 분해하여 다음 문자를 예측 검색 합니다. 예) "많" 입력시 "_많_", "_만_", "_만ㅎ_"로 검색을 수행.
- 겹초성으로 입력된 경우 분해 검색을 수행합니다. 예) ㅍㄻㅌ 입력시 "_ㅍㄹㅁㅌ_" 로 검색 수행.
- Typescript 를 지원하도록 구현하였습니다.

@@ -59,3 +62,3 @@ - AMD, CJS 스펙을 모두 지원할 수 있도록 UMD 패턴으로 작성하였습니다.

// 검색 수행
const result = hansearch(json, "ㅈ렬화");
const result = hansearch(json, "ㅈㅀ");
console.log(result);

@@ -102,3 +105,3 @@

var result = hansearch(json, "ㅈ렬화");
var result = hansearch(json, "ㅈㅀ");
console.log(result);

@@ -142,5 +145,5 @@

var options = {
"mode" : "exact",
"keys" : ["key1", "key2"]
}
mode: "exact",
keys: ["key1", "key2"],
};
var result = hansearch(json, "ㅈ렬화", options);

@@ -159,7 +162,6 @@ ```

var keys = ["title", "users"];
var options = { "keys" : ["title", "users"] };
var options = { keys: ["title", "users"] };
var result = hansearch(json, "ㅈ렬화", keys);
var result = hansearch(json, "ㅈ렬화", options);
```

@@ -166,0 +168,0 @@

@@ -43,22 +43,21 @@ /*!

// 사용자의 예상 기대 결과 도출을 위해 검색 키워드를 생성. 마지막 문자를 분해 조합.
// 사용자의 예상 기대 결과 도출을 위해 검색 키워드를 생성. 자음 문자 분해 조합.
const makeSearchWords = (keyWord = "") => {
let keywords = [keyWord];
let keywords = [];
let preCharacters = keyWord.slice(0, -1); // 마지막 문자를 제외한 모든 문자열
const lastCharacter = keyWord.slice(-1); // 마지막 문자
let preCharacters = keyWord.slice(0, keyWord.length - 1); // 마지막 문자를 제외한 모든 문자열
preCharacters = preCharacters
.split("")
.map((currentChar) => {
if (MAP_DOUBLE_MOUM.hasOwnProperty(currentChar)) {
// 앞 문자열에 겹초성만 있는 문자는 분해해서 조립
return MAP_DOUBLE_MOUM[currentChar];
} else {
return currentChar;
}
})
.join("");
keywords.push(keyWord); // 사용자 입력 문자 그대로 추가
//keywords.push(preCharacters);
const lastCharacter = keyWord.charAt(keyWord.length - 1); // 마지막 문자
if (preCharacters) {
preCharacters = preCharacters
.split("")
.map((c) => (MAP_DOUBLE_MOUM.hasOwnProperty(c) ? MAP_DOUBLE_MOUM[c] : c))
.join("");
if (preCharacters !== preCharacters.split("").join("")) {
keywords.push(preCharacters); // 초성 분해 결합 문자 추가
}
}
if (lastCharacter >= "가" && lastCharacter <= "힣") {

@@ -73,12 +72,13 @@ // 모음이 포함된 경우

const jong_char = JONG_HANGUL[jong];
if (jong > 0) {
if (MAP_DOUBLE_MOUM.hasOwnProperty(jong_char)) {
// 겹받침인 경우
let result = johapHangul(cho_char, jung_char, MAP_DOUBLE_MOUM[jong_char][0]);
keywords.push(preCharacters + result);
keywords.push(preCharacters + result + MAP_DOUBLE_MOUM[jong_char][1]);
const result = johapHangul(cho_char, jung_char, MAP_DOUBLE_MOUM[jong_char][0]);
keywords.push(preCharacters + result); // 겹받침 분해 홑받침으로 조합해서 추가
keywords.push(preCharacters + result + MAP_DOUBLE_MOUM[jong_char][1]); // 겹받침 분해 홑받침 + 초성 문자 추가
} else {
// 홑받침인 경우
keywords.push(preCharacters + johapHangul(cho_char, jung_char));
keywords.push(preCharacters + johapHangul(cho_char, jung_char) + jong_char);
keywords.push(preCharacters + johapHangul(cho_char, jung_char)); // 초성+중성 문자 추가
keywords.push(preCharacters + johapHangul(cho_char, jung_char) + jong_char); // 초성+중성+초성 문자 추가
}

@@ -89,7 +89,8 @@ }

if (MAP_DOUBLE_MOUM.hasOwnProperty(lastCharacter)) {
keywords.push(preCharacters + MAP_DOUBLE_MOUM[lastCharacter]);
} else {
keywords.push(preCharacters + lastCharacter);
keywords.push(preCharacters + MAP_DOUBLE_MOUM[lastCharacter]); // 겹초성 분해 문자 추가
}
}
if (preCharacters + lastCharacter !== keyWord) {
keywords.push(preCharacters + lastCharacter); // 초성 분해 + 마지막 문자 추가
}
return keywords;

@@ -120,4 +121,5 @@ };

}
const regexArray = searchWords.map((word) => makeRegexByCho(word)).filter((regex) => regex);
//console.log(searchWords, regexArray);
console.log(searchWords, regexArray);

@@ -124,0 +126,0 @@ let searchResult = jsonObj.filter((obj) => {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc