搜索查询出错

时间:2011-05-12 22:22:22

标签: full-text-search xquery

我正在使用以下xml文档结构:

<feed>
  <entry>
     <title>Title 1</title>
  </entry>
  <entry>
     <title>Entry by Sony</title>
  </entry>
</feed>

我正在迭代文档名称以“feed”开头的数据库中的所有文档,例如:feed_doc1,feed_doc2等。我正在搜索包含给定关键字并尝试返回文档名称的文档。我正在使用BaseX XML数据库,我正在使用以下xquery:

for $doc_name in db:list()
 where fn:starts-with($doc_name, 'feed')
    return
      for $node in doc($doc_name)/feed/entry[.//text() contains text 'Sony']]
        return $doc_name

简而言之,我的查询应返回包含关键字“Sony”的所有文档的文档名称。

我看到以下错误:

java.io.IOException:org.basex.query.item.FTxt无法强制转换为org.basex.query.item.QNm

我试图谷歌关于此错误,但找不到足够的帮助信息。有人可以帮忙吗?

谢谢, 索尼

1 个答案:

答案 0 :(得分:0)

org.basex.query.item.FTxt =&gt;是一个文本节点片段和 org.basex.query.item.QNm =&gt;是合格的名称或QName() 您很可能必须将QName转换为字符串

然而

Ftxt(或全文)=&gt;将是这个表达.// text()包含文本'Sony'

双斜杠“允许步骤操作节点的任何后代”,这可能是不精确的,不需要Xquery 1.1函数我会这样做

doc($doc_name)/entry/title[contains(text(),'Sony')]