繁体   English   中英

XQuery关键字搜索问题

[英]XQuery Keyword Search Issue

我正在学习XQuery关键字搜索并在网站中显示结果。 而且我发现有有用的教程网站逐步地开发了一个网站。

但是,执行代码后出现错误(无效的qname文本:match-count) 是否缺少定义名称空间?

有人可以帮助我解决此问题吗? 谢谢。

教程网站: https : //en.wikibooks.org/wiki/XQuery/Keyword_Search

错误画面

编码部分

由错误消息标记的函数text:match-count()已被弃用并从eXist中删除,原始的特定于eXist的全文搜索运算符&=也已被删除。 结果,这篇文章(历史页面使我想起了我10年零3个月前所写的文章!)迫切需要进行更新。 这些“旧版”全文功能已从eXist中删除,因为添加了一个更为出色的解决方案,即基于Lucene的全文索引,您可以在https://exist-db.org/exist/apps/doc/lucene中进行阅读。 。

更新的文章将重点介绍基于Lucene的新全文本索引。 首先,创建一个集合配置文件,称为collection.xconf

<collection xmlns="http://exist-db.org/collection-config/1.0">
    <index xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <lucene>
            <text qname="body"/>
            <text qname="biography"/>
        </lucene>
    </index>
</collection>

将此文档保存在/db/test集合中。 eXide通过提供(1)将文档的副本存储在实际需要的位置(在/db/system/config/db/test集合中),以及(2)为/db/test重新/db/system/config/db/test索引,为您节省了一些步骤。收集以应用新的收集配置(您可以使用xmldb:reindex("/db/test")手动进行xmldb:reindex("/db/test")操作):

将集合配置文件保存为/db/system/config/db/test/collection.xconf ,然后可以使用ft:query函数查询/db/test集合,并使用ft:score函数对结果进行排序:

let $hits := 
    ( 
        collection('/db/test/articles')/article/body,
        collection('/db/test/people')/people/person/biography
    )[ft:query(., $q)]
for $hit in $hits
let $score := ft:score($hit)
order by $score descending
return $hit

(请注意,与本文相比,我们可以省去对用户提供的查询字符串的过滤,因为我们不再使用util:eval 。实际上,这实际上并不是必需的。)

有了这一更改-切换到eXist的基于Lucene的较新的全文本搜索引擎-本文的其余部分仍应基本上适用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM