
빠르고 확장 가능하며 독립형 순수한 자바 스크립트 전문 검색 엔진. 마디. 데노. 브라우저.
npm install thinker-fts --save
JavaScript ESM
import Thinker from "thinker-fts" ;
const thinker = Thinker ( ) ;JavaScript commonjs
const Thinker = require ( "thinker-fts" ) ;
const thinker = Thinker ( ) ;TypeScript
CommonJS 모듈이 내부적으로 사용되므로 Node.js Typescript에서는 기본 내보내기 만 사용할 수 있습니다.
import Thinker from "thinker-fts" ;
const thinker = Thinker ( ) ;자바 스크립트
import Thinker from "https://cdn.jsdelivr.net/gh/hexagon/thinker-fts@2/dist/thinker.min.mjs" ;
const thinker = Thinker ( ) ;또는
import Thinker from "https://deno.land/x/thinker/dist/thinker.min.mjs" ;
const thinker = Thinker ( ) ;thinker.min.js (UMD 및 독립형) 또는 thinker.min.mjs (es-module)를 Dist/ Folder UMD 모듈로 사용하려면 (독립형, 요구 사항 등)
< script src =" https://cdn.jsdelivr.net/npm/thinker-fts/dist/thinker.min.js " > </ script >ES- 모듈로 사용합니다
< script type =" module " >
import Thinker from "https://cdn.jsdelivr.net/npm/thinker-fts/dist/thinker.min.mjs" ;
const thinker = Thinker ( ) ;
// ... see usage section ...
</ script > 공급 및 검색이있는 간단한 설정은 아래 스 니펫과 같은 것으로 보입니다.
// See installation section for exact procedure depending on environment, this is Node.js/CommonJS
const Thinker = require ( 'thinker-fts' ) ,
const thinker = Thinker ( ) ;
// Connect standard ranker
thinker . ranker = Thinker . rankers . standard ( ) ;
// Feed thinker with an array of documents formatted like { id: id, fields: [textfield, textfield] }
thinker . feed ( [
{ id : 1 , fields : [ 'Lorem' , 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' ] } ,
{ id : 2 , fields : [ 'Ipsum' , 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.' ] }
] ) ;
// Search for text
var result = thinker . find ( 'ut in' ) ;
// Show result
console . log ( result ) ;결과:
{
expressions: [
{
original: 'ut',
interpretation: [Object],
suggestion: undefined,
modifier: undefined,
exactMode: false
},
{
original: 'in',
interpretation: [Object],
suggestion: undefined,
modifier: undefined,
exactMode: false
}
],
performance: {
find: 1.107075,
rank: 0.598558,
sort: 0.688598,
filter: 0.060182,
total: 2.639159
},
documents: [
{ id: 2, weight: 1.5, expressions: [Object] },
{ id: 1, weight: 1.5, expressions: [Object] }
],
totalHits: 2,
returnedHits: 2
}
랭커를 연결 해야하는 것은 아닙니다. 그렇지 않으면 찾은 결과 세트를 제공하지 않습니다. 랭커는 결과 세트를 빌드합니다.
사상가 기본 구성은 사상가 생성자에게 옵션 객체를 제공하여 재정의됩니다.
// Options only available at initialization
var thinker = Thinker ( {
characters : / ([a-zA-Z0-9]*) / g ,
caseSensitive : false ,
minWildcardWordLen : 3 ,
maxWildcardWordLen : 32 ,
minWordLen : 2 ,
maxWordLen : 32 ,
suggestionMinWordCount : 6 ,
enableSuggestions : false ,
optionalPlusFromExpressions : 1 ,
concatenateWords : 1
} ) ;스웨덴 문자와 함께 사상가를 사용하려면 단어로 어떤 문자를 선택 해야하는지에 대해 정기적으로 표현합니다.
{ characters : / ([a-zA-Z0-9åäöÅÄÖ]*) / g }자기 설명, 참 또는 거짓
사상가는 항상 부분적 일치하는 작업을 수행하며 MinwildCardwordlen은 색인화되어야하는 단어의 짧은 부분을 설정합니다. 기본 설정은 'xpre'와 'expression'과 일치하지만 'pre'와 일치하는 4입니다. 이것을 너무 짧게 설정하면 통합적인 양의 가짜 일치가 발생할 수 있으며 무거운 순위와 함께 사용하면 성능에 영향을 줄 수 있습니다.
위와 동일하지만 Max.
색인으로 가장 짧은 단어 인 Default는 2이지만 'EX'를 인덱스에 추가하지만 'e'는 아닙니다.
위와 동일하지만 Max.
제안에 사용하기 위해 인덱스에 단어가 몇 번 존재 해야하는지 설정하십시오. 기본값은 6입니다.
이것이 활성화되면, 사상가는 입력 된 텍스트에서 처리되지 않은 단어를 사용하여 표현이 직접 일치하지 않을 때 제안을합니다.
이것이 결과입니다. Expressions [n]은 'Exression'(누락)을 검색 할 때와 비슷합니다.
이름이 바뀔 것입니다. 약속합니다.
이것은 모든 단어가 선택 사항이되기 전에 표현에 얼마나 많은 단어가 있어야하는지입니다. 기본값으로 1 (비활성화).
이것을 4로 설정하고 세 단어 표현식을 검색하면 문서에 모든 단어가 존재해야합니다. 배경에서 what you want +what +you +want 됩니다. 네 단어 표현식을 선보이면 모든 단어는 usuabl로 선택 사항이됩니다.
이 속성이 하나 이상으로 설정되면, 증강 단어는 현재와 다음 단어로 구성된 색인에 삽입됩니다. 이 속성이 3으로 설정되어 있고 필드가 "오늘 쿠키를 원한다"라면, iwantcookies , wantcookiestoday 또는 wantcookies 검색하면 일치 할 것입니다.
{
interpretation : {
original : 'expression' ,
...
} ,
...
suggestion : 'expression' ,
...
} 랭커는 옵션 객체를 생성자에게 전달하여 구성됩니다.
var thinker = Thinker ( ) ,
ranker = Thinker . rankers . standard ( {
directHit : 1 ,
partialHit : 0.5 ,
eachPartialExpressionFactor : 1.5 ,
eachDirectExpressionFactor : 2 ,
fields : {
1 : { weight : 4 , boostPercentage : false } ,
2 : { weight : 2 , boostPercentage : false }
}
} ) ;
thinker . ranker = ranker ;표현이 단어와 직접 일치 할 때 체중을 고려하십시오. 부분적으로
표현식이 부분 일치를 제공 할 때 문서에 적용되는 요인. 쿼리에 모든 일치하는 세 가지 표현식으로 구성되면이 요소는 세 번 적용됩니다.
위와 동일하지만 직접 히트가 있습니다.
문서의 각 필드에서 일치하는 다른 기본 가중치를 정의하는 객체
var docs = [
{ id : 1 , fields : [ "This is the title" , "This is the ingress" , "This is the text" ] } ,
...
] ;그리고 당신의 필드 무게는 모양입니다
fields: {
0 : { weight : 4 , boostPercentage : true } ,
1 : { weight : 2 , boostPercentage : false } ,
2 : { weight : 2 , boostPercentage : false }
}타이틀 필드의 일치는 4의 무게를 얻고 Ingress 필드의 일치는 2 등의 무게를 얻습니다.
또한, 부스트 패턴 중심이 타이틀을 위해 True로 설정되므로, 경기가 제목의 유일한 단어라면 그 무게는 두 배로 올라갈 수 있습니다.
예를 들어, 제목이 '이것은 물건입니다'이고 우리는 '스테트'를 검색하면 기본 무게는 4 개이며 계산 된 요인이 곱합니다.
1 단어 일치, 4 단어는 완전히 일치합니다
1+1/4
1+0.25
중심 요인으로 1.25를 제공합니다
현장 프로세서는 인덱싱이 완료되기 전에 사상가가 공급되는 모든 필드에 적용되는 기능입니다.
Stripts html, 링크 (a href = " ") 및 이미지 설명 (IMG Alt = " ")을 반환 된 결과에 남겨 둡니다.
표준 랭커 및 HTML 스트리핑으로 사상가를 설정합니다
var
thinker = Thinker ( ) ,
ranker = Thinker . rankers . standard ( ) ,
stripHtml = Thinker . processors . stripHtml ( ) ;
thinker . addFieldProcessor ( stripHtml ) ;
thinker . ranker = ranker ; 워드 프로세서는 사상가가 공급되는 모든 단어에 적용되는 기능입니다. 인덱싱시 및 쿼리시 모두 같은 방식으로 적용됩니다.
워드 프로세서는 구성되는 것과 같은 방식으로 처리됩니다. 예를 들어 WordForms를 적용하기 전에 Word를 막을 경우 WordForms 목록에서 줄기 단어를 사용해야합니다.
선택한 단어를 다른 사람으로 대체하여 동의어를 효과적으로 서로 동일하게 만듭니다.
예제 표준 순위 및 WordForms로 사상가를 설정합니다
var thinker = Thinker ( ) ,
ranker = Thinker . rankers . standard ( ) ,
wordforms = Thinker . processors . wordforms ( {
"we" : "us" ,
"they" : "them" ,
"github" : "repository"
} ) ;
thinker . addWordProcessor ( wordforms ) ;
thinker . ranker = ranker ;더 나은 정밀도를주지 않는 단어를 제거하고 일반적으로 '및', 'i', '그들', '우리', 'can'과 같은 것들을 제거합니다. 여기에 가장 일반적인 단어를 추가하면 Quries가 약간 속도를 높이고 램을 절약 할 수 있습니다.
표준 순위를 가진 사상가 설정 및 단어 중지 단어
var thinker = Thinker ( ) ,
ranker = Thinker . rankers . standard ( ) ,
stopwords = Thinker . processors . stopwords ( {
"artikel" : true ,
"bemötande" : true
} ) ;
thinker . addWordProcessor ( stopwords ) ;
thinker . ranker = ranker ;인덱스 된 각 단어의 줄기를 찾아, '컴퓨터'는 '컴퓨터'가 될 것입니다. '조직화 된'은 '조직'등이 될 것입니다. 이는 일치와 가중치의 정확성을 크게 향상시킵니다.
STEMMERS의 선택적 특징은 스템 내려 놓고 싶지 않은 단어 목록을 제공하는 것입니다.
현재 스웨덴어의 스노우 볼 알고리즘을 통해 스웨덴어와 포터 알고리즘을 통해 영어를 사용하여 스웨덴어를 사용할 수 있습니다.
표준 랭커, 영어 스템 밍 및 일부 Stemmer Stopword를 사용하여 사상가 설정 예제.
var
thinker = Thinker ( ) ,
ranker = Thinker . rankers . standard ( ) ,
stemmer = Thinker . processors . stemmers . english ( {
"stemmer" : true ,
"stemming" : true ,
"dontstemthiseither" : true ,
"leonardo" : true ,
"anders" , true
} ) ;
thinker . addWordProcessor ( stemmer ) ;
thinker . ranker = ranker ;표준 랭커, 스웨덴어 스템 밍 및 스티머 중지 단어로 사상가 설정 예
var
thinker = Thinker ( ) ,
ranker = Thinker . rankers . standard ( ) ,
stemmer = Thinker . processors . stemmers . swedish ( {
"berta" : true ,
"jonas" : true ,
"leonardo" : true ,
"anders" : true
} ) ;
thinker . addWordProcessor ( stemmer ) ;
thinker . ranker = ranker ;Soundex는 똑같이 소리가 나오는 단어가 서로 일치하는 방식으로 단어를 전제합니다.
Soundex 처리로 사상가 설정 예제.
var
thinker = Thinker ( ) ,
ranker = Thinker . rankers . standard ( ) ,
soundex = Thinker . processors . soundex ( ) ;
thinker . addWordProcessor ( soundex ) ;
thinker . ranker = ranker ; 참고 : 정상적인 사용의 경우 필요한 모든 종속성이 번들로 제공됩니다
Fast-Levenshtein (https://github.com/hiddentao/fast-levenshtein)
Stemmer (https://github.com/wooorm/stemmer)
Node-Soundex (https://github.com/louist/node-soundex)
Mocha (https://github.com/mochajs/mocha)
(https://github.com/shouldjs/should.js)
육각형
페르 보만
MIT 라이센스에 따라 라이센스