2017-07-18 35 views
1

我是MarkLogic的新手。我正在尋找一種方法,只在使用jsearch時從文檔中輸出匹配元素,但執行查詢時,元素與搜索到的詞語之間的匹配是未知的。讓我來舉例說明:Marklogic搜索:僅使用jsearch輸出匹配元素和文檔的uri

jsearch.documents() 
    .where(cts.wordQuery('mark')) 
    .result(); 

這給了我包含'mark'的所有文檔,例如

{ 
    "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." 
    } 
    } 
    , ... 

不過,我想知道,這樣它給地方找到一個匹配的每個文檔只有匹配的元素(S)我如何調整查詢:

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

只有作者元素在這裏有匹配,但是在執行查詢時這個元素是未知的。我只想顯示上面作者的匹配值。 在此先感謝!

回答

3

您在這裏有幾個選項。

如果你想運行使用jSearch只針對一個JSON屬性進行搜索,您可以運行以下命令:

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

如果你想控制怎麼樣得到由jSearch回來了,你可以適用extraction

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

您也可以將二者結合起來:

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'] } }); 

有關更多信息,您可以閱讀以下文檔:http://docs.marklogic.com/guide/search-dev/javascript#id_71243

(還有一點需要注意:您可能還想對運行按示例查詢感興趣 - 在此基礎上構建原型文檔並執行搜索。更多的信息在這裏:http://docs.marklogic.com/guide/search-dev/javascript#id_60216

+0

Tamas的好建議的一個腳註:map()後處理器可以提供{snippet:...}規範,不再需要單獨的documentSelect()調用。請參閱:http://docs.marklogic.com/guide/search-dev/javascript#id_71243 – ehennum

+0

如果我事先不知道我的單詞'mark'的匹配是否會寫入元素'author'在一些文件中。 – sjoerd999

相關問題