eXist-db - 基本 Lucene 查询 returns 空序列
eXist-db - basic Lucene query returns empty sequence
在 eXist-db 4.4 中,我试图实现一个基本的 Lucene 查询结构,但它没有返回任何结果。
在 /db/apps/deheresi/data
中,我有一组具有相同结构的 tei-xml
文档,我只想将查询应用于在元素 tei:seg
中找到的文本内容,并且它的后代。一个典型的样本是:
<TEI>
<text>
[...]
<seg type="dep_event" subtype="event" xml:id="MS609-0001-1">
<pb n="1r"/>
<lb break="n" n="1"/>
<date type="deposition_date" when="1245-05-27" cert="high">Anno
Domini M° CC° XL° quinto VI Kalendas Iunii.</date>
<persName nymRef="#Arnald_Garnier_MSP-AU" role="dep">Arnaldus Garnerii</persName>
testis iuratus dixit quod vidit in
<placeName type="event_loc" nymRef="#home_of_Cap-de-Porc">domo
<persName nymRef="#Peire_Cap-de-Porc_MSP-AU" role="own">Petri de Sancto Andrea</persName>
</placeName>
<lb break="y" n="2"/>
<persName nymRef="#Bernard_Cap-de-Porc_MSP-AU" role="her">B<supplied reason="expname">ernardum</supplied> de Sancto Andrea</persName>,
fratrem dicti Petri, et socium eius, hereticos. Et vidit ibi cum eis dictum
<persName nymRef="#Peire_Cap-de-Porc_MSP-AU" ana="#uAdo" role="par">P<supplied reason="expname">etrum</supplied> de Sancto Andrea</persName> et
<persName nymRef="#Susanna_Cap-de-Porc_MSP-AU" ana="#uAdo" role="par">uxor dicti<lb break="y" n="3"/>Petri</persName>. Et
<persName nymRef="#Arnald_Garnier_MSP-AU" ana="#pAdo" role="par"/>ipse
testis adoravit ibi dictos hereticos, sed non vidit alios adorare. Et
<date type="event_date" when="1239">sunt VI anni vel circa</date>.
<seg type="inq_int" subtype="specific_question">Et quando ipse testis exivit<lb break="y" n="4"/>domum invenit
<persName nymRef="#Guilhem_de_Rosengue_MSP-AU" key="inqint" ana="#pIntra" role="ref">Willelmus de Rozergue</persName> intrantem ad dictos hereticos.</seg>
</seg>
<seg>
[...]
</seg>
[...]
<text>
<TEI>
我按如下方式创建并应用了 Lucene 索引(包括 ignore
某些元素):
<collection xmlns="http://exist-db.org/collection-config/1.0">
<index xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<lucene>
<analyzer class="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
<text qname="tei:seg"/>
<ignore qname="tei:note"/>
<ignore qname="tei:gap"/>
<ignore qname="tei:del"/>
<ignore qname="tei:orig"/>
<inline qname="tei:supplied"/>
</lucene>
</index>
我现在 运行 我对单个拉丁词的查询在我的集合中的每个文档中多次发现:
let $query :=
<query>
<term>vidit</term>
</query>
return
collection('/db/apps/deheresi/data')//tei:seg[ft:query(.,$query)]
我收到了回复:
`eXist-db localhost 8081 : Your query returned an empty sequence`
我是否忽略了一块 Lucene 实现难题?
非常感谢。
使用 eXist 索引时,请记住您必须将 collection 配置文件存储在 /db/system/config/
的子 collection 中以镜像数据的位置。因此,如果您的数据在 /db/apps/deheresi
中,则必须将 collection 配置文件存储为 /db/system/config/db/apps/deheresi/collection.xconf
.
eXide 有一个非常方便的功能,当您在数据库中存储一个 collection 配置文件时,它会检测到,并提供在 /db/system/config
子[中的相应位置存储该文件的副本] =22=],并在副本存储后重新索引源 collection。
但是,当在 eXide 外部工作时,请记住对 /db/apps/deheresi/collection.xconf
的编辑必须手动复制到 /db/system/config
collection,并且源 collection 必须手动重新编制索引——以便新配置生效。
在 eXist-db 4.4 中,我试图实现一个基本的 Lucene 查询结构,但它没有返回任何结果。
在 /db/apps/deheresi/data
中,我有一组具有相同结构的 tei-xml
文档,我只想将查询应用于在元素 tei:seg
中找到的文本内容,并且它的后代。一个典型的样本是:
<TEI>
<text>
[...]
<seg type="dep_event" subtype="event" xml:id="MS609-0001-1">
<pb n="1r"/>
<lb break="n" n="1"/>
<date type="deposition_date" when="1245-05-27" cert="high">Anno
Domini M° CC° XL° quinto VI Kalendas Iunii.</date>
<persName nymRef="#Arnald_Garnier_MSP-AU" role="dep">Arnaldus Garnerii</persName>
testis iuratus dixit quod vidit in
<placeName type="event_loc" nymRef="#home_of_Cap-de-Porc">domo
<persName nymRef="#Peire_Cap-de-Porc_MSP-AU" role="own">Petri de Sancto Andrea</persName>
</placeName>
<lb break="y" n="2"/>
<persName nymRef="#Bernard_Cap-de-Porc_MSP-AU" role="her">B<supplied reason="expname">ernardum</supplied> de Sancto Andrea</persName>,
fratrem dicti Petri, et socium eius, hereticos. Et vidit ibi cum eis dictum
<persName nymRef="#Peire_Cap-de-Porc_MSP-AU" ana="#uAdo" role="par">P<supplied reason="expname">etrum</supplied> de Sancto Andrea</persName> et
<persName nymRef="#Susanna_Cap-de-Porc_MSP-AU" ana="#uAdo" role="par">uxor dicti<lb break="y" n="3"/>Petri</persName>. Et
<persName nymRef="#Arnald_Garnier_MSP-AU" ana="#pAdo" role="par"/>ipse
testis adoravit ibi dictos hereticos, sed non vidit alios adorare. Et
<date type="event_date" when="1239">sunt VI anni vel circa</date>.
<seg type="inq_int" subtype="specific_question">Et quando ipse testis exivit<lb break="y" n="4"/>domum invenit
<persName nymRef="#Guilhem_de_Rosengue_MSP-AU" key="inqint" ana="#pIntra" role="ref">Willelmus de Rozergue</persName> intrantem ad dictos hereticos.</seg>
</seg>
<seg>
[...]
</seg>
[...]
<text>
<TEI>
我按如下方式创建并应用了 Lucene 索引(包括 ignore
某些元素):
<collection xmlns="http://exist-db.org/collection-config/1.0">
<index xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<lucene>
<analyzer class="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
<text qname="tei:seg"/>
<ignore qname="tei:note"/>
<ignore qname="tei:gap"/>
<ignore qname="tei:del"/>
<ignore qname="tei:orig"/>
<inline qname="tei:supplied"/>
</lucene>
</index>
我现在 运行 我对单个拉丁词的查询在我的集合中的每个文档中多次发现:
let $query :=
<query>
<term>vidit</term>
</query>
return
collection('/db/apps/deheresi/data')//tei:seg[ft:query(.,$query)]
我收到了回复:
`eXist-db localhost 8081 : Your query returned an empty sequence`
我是否忽略了一块 Lucene 实现难题?
非常感谢。
使用 eXist 索引时,请记住您必须将 collection 配置文件存储在 /db/system/config/
的子 collection 中以镜像数据的位置。因此,如果您的数据在 /db/apps/deheresi
中,则必须将 collection 配置文件存储为 /db/system/config/db/apps/deheresi/collection.xconf
.
eXide 有一个非常方便的功能,当您在数据库中存储一个 collection 配置文件时,它会检测到,并提供在 /db/system/config
子[中的相应位置存储该文件的副本] =22=],并在副本存储后重新索引源 collection。
但是,当在 eXide 外部工作时,请记住对 /db/apps/deheresi/collection.xconf
的编辑必须手动复制到 /db/system/config
collection,并且源 collection 必须手动重新编制索引——以便新配置生效。