2017-03-21 27 views
2

couchdbで全文検索についての指示が必要です。 2.0ではデフォルトですでに有効になっていますか?それを可能にするcouchdbを再構築する必要がありますか?CouchDB全文検索

シナリオ: 文書管理システムであり、文書はグリッドで表示されます。私は結果を並べ替えることができる必要があります。マップからのいくつかの変更が弾力的なインデックスに減少した後、今私はマンゴークエリを使用しようとしています。問題は、並べ替えが期待した結果を得られないことです。 「被験体」または他のテキストフィールドでソートしようとすると

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

は、私が思う、との結果をミックスし、「インデックス・ロジック」(例:返されるソート対象者:「このメール...」、「こんにちは... "、"このメール... "、どうして私が必要なのか分かりません)。アナライザ、トークンなどが「奇妙な」検索結果と関係しているかどうかを覚えておいてください。たとえば、日付フィールドの降順ソートでは、はるかに優れていますが、2017年から2016年までの文書を表示した2014年の文書の「侵入者」の結果があります。

可能なドキュメントソートフィールドのいくつかについて、jsonタイプのインデックスを作成しました。テキスト型インデックスの作成は機能しません。私は全文検索が私の「ソート」問題を解決するだろうとは知らないが、クラウド・クエリー言語と全文検索への言及があれば、この機能が2.0に含まれていると思った。

答えて

3

CouchDB自体には、フルテキストインデクサーが組み込まれていません。マンゴーでは多くのことができますが、専用のフルテキストインデクサーが役立つでしょう。

2、最も一般的なオプションは次のとおりです。しばらく探した後couchdb-luceneelasticseach

+0

リリース4.6.0を、してみてください(すべてのコメントを削除してから、コピー&ペースト)することができます。それはかなりうまくいくが、まだそれを使って遊んでいる。 –

+3

それはCouchDBと同じではない、CouchBaseです。しかし、はい、それもオプションです。 –

0

と失敗し、最終的には、私はいくつかの作業システムを持って、誰かがフルテキスト検索をしたい場合、私はコメント を教えてください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