2017-07-18 7 views
1

MarkLogicを初めて使用しました。私は、jsearchを使用するときにドキュメントから一致する要素を出力する方法を探していますが、クエリを実行するときに、検索された用語の要素に一致する要素がありません。私は説明しましょう:Marklogic検索:一致する要素とjsearchを使用して文書のURIのみを出力します

これは私に「マーク」を含むすべてのドキュメントを提供します。

{ 
    "results": [ 
    { 
    "index": 0, 
    "uri": "/books/twain4.json", 
    "score": 14336, 
    "confidence": 0.432453483343124, 
    "fitness": 0.7490314245224, 
    "document": { 
     "author": "Mark Twain", 
    } 
    } 
    , ... 

のみ著者:

{ 
    "results": [ 
    { 
    "index": 0, 
    "uri": "/books/twain4.json", 
    "score": 14336, 
    "confidence": 0.432453483343124, 
    "fitness": 0.7490314245224, 
    "document": { 
     "title": "Adventures of Huckleberry Finn", 
     "author": "Mark Twain", 
     "edition": { 
     "format": "hardback", 
     "price": 18 
     } 
     , 
     "synopsis": "The adventures of Huck, a boy of 13, and Jim, an escaped slave, rafting down the Mississippi River in pre-Civil War America." 
    } 
    } 
    , ... 

しかし、私はそれはマッチが発見されたドキュメントごとにのみ一致する要素(複数可)を与えるよう、私は、クエリを調整することができます方法を知っているしたいのですが要素はここで一致しますが、この要素はクエリの実行時には分かりません。私は上記のような著者のための一致する値だけを表示したいと思います。 ありがとうございます!

答えて

3

ここにはいくつかのオプションがあります。

const jsearch = require('/MarkLogic/jsearch'); 
const term = 'mark'; 
const query = cts.jsonPropertyWordQuery('author', term); 
jsearch.documentSelect(cts.search(query), { snippet: { query: query } }); 

あなたがjSearchで何を返される方法を制御したい場合は、することができます:あなたが唯一のJSONプロパティに対してjSearchを使用して検索を実行したい場合は、以下を実行することができます

extraction適用されます。

const jsearch = require('/MarkLogic/jsearch'); 
const term = 'mark'; 
const query = cts.jsonPropertyWordQuery('author', term); 
jsearch.documentSelect(cts.search(query), { snippet: { query: query }, extract: { paths: ['/author'] } }); 

const jsearch = require('/MarkLogic/jsearch'); 
const term = 'mark'; 
jsearch.documents().where(cts.wordQuery(term)) 
.map({ extract: { paths: ['/author'] }}) 
.result(); 

ます。また、両者を組み合わせることができます詳細については、次のドキュメントを参照してください。http://docs.marklogic.com/guide/search-dev/javascript#id_71243 (もう1つの注意:プロトタイプドキュメントを作成し、それに基づいて検索を実行するクエリバイケースの実行に興味があります。詳細はこちらhttp://docs.marklogic.com/guide/search-dev/javascript#id_60216

+0

map()ポストプロセッサは、個別のdocumentSelect()呼び出しの必要性を排除して{snippet:...}仕様を提供できます。参照してください:http://docs.marklogic.com/guide/search-dev/javascript#id_71243 – ehennum

+0

私の単語 'マーク'の一致が要素 '著者'いくつかの文書で。 – sjoerd999

関連する問題