2

couchdb에서 전체 텍스트 검색에 대한 지침이 필요합니다. 2.0에서 이미 기본적으로 활성화되어 있습니까? 아니면 couchdb를 활성화하여 다시 빌드해야합니까?CouchDB 전체 텍스트 검색

시나리오 : 시나리오는 문서 관리 시스템이며 문서는 그리드로 표시됩니다. 나는 결과를 분류 할 수 있어야한다. 지도에서 몇 가지 변경 사항이 탄성 색인으로 줄어들면 이제 망고 쿼리를 사용하려고합니다. 문제는 정렬이 예상 된 결과를 제공하지 않는다는 것입니다. "대상"또는 다른 텍스트 필드를 기준으로 정렬하려고

{ 
    "selector": { 
    "directoryName": { 
     "$eq": "mail\\test\\inbox" 
    }}, 
    "sort": [{"subject": "asc"}] 
} 

, 난 가정에 결과를 혼합, "인덱스 논리"(예 : 반환 분류 주제 : "이 이메일 ...", "안녕하세요 ... ","이 이메일 ... ", 분명히 내가 필요한 것). 분석기, 토큰 등이 "이상한"검색 결과와 관련이 있다면 기억하지 못합니다. 예를 들어 날짜 필드 desc 정렬을 사용하면 훨씬 더 잘 작동하지만 2017 년부터 2016 년까지 문서를 표시 할 때 2014 년 문서의 "침입자"결과가 발생합니다.

몇 가지 가능한 문서 정렬 필드에 대해 json 유형의 색인을 만들었습니다. 텍스트 유형 색인 작성이 작동하지 않습니다. 전체 텍스트 검색이 내 "정렬"문제를 해결할 것이라는 것을 모릅니다. 그러나 클라우드 쿼리 언어 및 전체 텍스트 검색에 대한 모든 참조를 통해이 기능이 2.0에 포함되어 있다고 생각했습니다.

답변

3

CouchDB 자체에는 전체 텍스트 인덱서가 내장되어 있지 않습니다. 당신은 망고로 많은 것을 할 수 있지만, 전담 텍스트 전문 인덱서가 훨씬 도움이 될 것입니다.

2 개의 가장 일반적인 옵션은 다음과 같습니다 couchdb-lucene

+0

릴리스 4.6.0을 시도 (모든 댓글을 삭제 한 다음 붙여 복사) 할 수 있습니다. 그것은 꽤 잘 작동하지만, 여전히 놀고 있습니다. –

+3

그것은 CouchDB와는 다른 CouchBase입니다. 그러나 그렇습니다, 그것은 선택 사항입니다. –

0

elasticseach 잠시 동안 검색 한 후 실패, 마지막으로, 나는 몇 가지 작업 시스템을 가지고, 사람이 전체 텍스트 검색을 원하는 경우 나 어떤 의견 을 알려 주시기 바랍니다 CouchDB를 개발자 미리보기에서 FTS를 가지고 어쩌면 당신은

function (doc) { 
 
    var prefix; 
 
    for(prop in doc){ 
 
    if(prop=="_id"||prop=="_rev") // ignore _id, _rev or any unwanted properties 
 
    continue; 
 
    if(!Date.parse(doc[prop])) //ignore if it's a date type 
 
     prefix += doc[prop]; 
 
    else if(!isNAN(doc[prop])) // accept if it's a number type 
 
     prefix += doc[prop]; 
 
    else if(typeof(doc[prop]!=="boolean") //ignore if it's a boolean type 
 
     prefix += doc[prop]; 
 
    } 
 
    var i; 
 
    if (prefix) { 
 
     for (i = 0; i < prefix.length; i += 1) { 
 
      emit([prefix.slice(i)], doc); 
 
     } 
 
    } 
 
//searchText?startkey=["abc"]&endkey=["abc\u9999"]&reduce=false&skip=0&limit=3