Marklogic:“突出显示”似乎不适用于Node.js和QueryBuilder

问题描述:

我尝试获取文本摘录,并在JSON集合中突出显示搜索词。 我的搜索语法是:Marklogic:“突出显示”似乎不适用于Node.js和QueryBuilder

qb.word(qb.field('doc_text'),vartxt)

随着'doc_text'声明为现场 (field type: root, include root: false, includes: doc_text),在Node.js应用程式。

搜索效果很好,并且它在这个领域做得很好...... 但在txt[0].results[kl].matches[0]['match-text'],我找到了JSON, 的第一个3个属性,而不是从'doc_text'与找到的字的提取物。 我有另一个应用程序,其中的亮点工作正常,但它是基于XML。

我是否在字段声明中忘记了某些内容,或者JSON 与XML数据之间的操作有所不同,或者是不通过Node.js和QueryBuilder在JSON上运行的高亮系统?

亲切的问候

字段在XML和JSON中的工作方式不尽相同。我认为你正在运行到这个限制:

http://docs.marklogic.com/guide/app-dev/json#id_24090

XML中的字段的值可以将所有的文本节点的拼接,但同样不适用JSON。

+0

我已阅读此页面。我不认为这个限制是问题的原因。该字段是一个简单字段,即“pdftotext”的全局内容,不包含子字段或级联。并且搜索正常工作.... – mbport

+0

对XML的查询也是一个字段查询?片段(这是为JSON和XML生成匹配文本的原因)使用服务器cts.walk()函数,该函数可能与字段不匹配。 – ehennum

+0

是的,它基于node.js和querybuilder完全相同的查询。 – mbport

我想我明白了!

此查询给出了正确的片段中,与所述提取物和字突出: mkcq.and(mkcq.collection( '文件'),mkcq.word(mkcq.field( 'doc_text'), 'connaitre') )

另一方面,此查询给出了JSON的前3个字段: mkcq.and(mkcq.collection('document'),mkcq.word(mkcq.field('doc_text'),'connaitre '),mkcq.value(mkcq.element('','doc_user'),'mbp'))

我不知道这是否正常,但它应该能够通过简化的查询和返回记录的选择,晚上由特定snippeter。

亲切的问候