Xml 搜索:搜索API未返回正确的输出
我有以下包含三个专利转让标签的xml文档Xml 搜索:搜索API未返回正确的输出,xml,xquery,marklogic,Xml,Xquery,Marklogic,我有以下包含三个专利转让标签的xml文档 <patent-assignments> <patent-assignment> <patent-assignors> <patent-assignor> <name>TSAI, YU-WEN</name> </patent-assignor> </patent-assignors&g
<patent-assignments>
<patent-assignment>
<patent-assignors>
<patent-assignor>
<name>TSAI, YU-WEN</name>
</patent-assignor>
</patent-assignors>
<patent-assignees>
<patent-assignee>
<name>FARADAY TECHNOLOGY CORP.</name>
</patent-assignee>
</patent-assignees>
</patent-assignment>
<patent-assignment>
<patent-assignors>
<patent-assignor>
<name>APPLE</name>
</patent-assignor>
</patent-assignors>
<patent-assignees>
<patent-assignee>
<name>GOOGLE INC</name>
</patent-assignee>
</patent-assignees>
</patent-assignment>
<patent-assignment>
<patent-assignors>
<patent-assignor>
<name>GOOGLE INC</name>
</patent-assignor>
</patent-assignors>
<patent-assignees>
<patent-assignee>
<name>FARADAY TECHNOLOGY CORP.</name>
</patent-assignee>
</patent-assignees>
</patent-assignment>
</patent-assignments>
蔡宇文
法拉第科技公司。
苹果
谷歌公司
谷歌公司
法拉第科技公司。
现在,当我运行以下搜索查询时:-
import module namespace search="http://marklogic.com/appservices/search" at
"/Marklogic/appservices/search/search.xqy";
declare variable $options:=
<options xmlns="http://marklogic.com/appservices/search">
<transform-results apply="raw"/>
</options>;
search:search("apple", $options, 1, 1)/search:result
导入模块名称空间搜索=”http://marklogic.com/appservices/search“在
“/Marklogic/appservices/search/search.xqy”;
声明变量$options:=
;
搜索:搜索(“苹果”,$options,1,1)/search:result
我得到了完整的文档作为输出,但匹配的单词“APPLE”只出现在xml的第二个专利转让标签中。我只想得到第二次专利转让作为输出,而不是完整的文件。如果我使用snippets,那么它会显示找到匹配项的文档和元素名,但不会返回实际输出。我想要那个特定的专利分配标签作为找到匹配词的输出。Puneet,search:search函数正在做它配置要做的事情,从这个意义上说,响应是正确的。你只需要对你要求它做的事情做一点小小的改变。试试这个:
import module namespace search="http://marklogic.com/appservices/search" at
"/Marklogic/appservices/search/search.xqy";
declare variable $options:=
<options xmlns="http://marklogic.com/appservices/search">
<transform-results apply="raw"/>
<searchable-expression>/patent-assignments/patent-assignment</searchable-expression>
</options>;
search:search("apple", $options, 1, 1)/search:result
导入模块名称空间搜索=”http://marklogic.com/appservices/search“在
“/Marklogic/appservices/search/search.xqy”;
声明变量$options:=
/专利转让/专利转让
;
搜索:搜索(“苹果”,$options,1,1)/search:result
添加searchable expression元素后,我只返回与查询匹配的patent assignment元素:
<search:result index="1" uri="/patent.xml" path="fn:doc("/patent.xml")/patent-assignments/patent-assignment[2]" score="43008" confidence="0.664889" fitness="0.664889" xmlns="" xmlns:search="http://marklogic.com/appservices/search">
<patent-assignment>
<patent-assignors>
<patent-assignor>
<name>APPLE</name>
</patent-assignor>
</patent-assignors>
<patent-assignees>
<patent-assignee>
<name>GOOGLE INC</name>
</patent-assignee>
</patent-assignees>
</patent-assignment>
</search:result>
苹果
谷歌公司
Puneet,search:search功能正在执行它配置的功能,从这个意义上说,响应是正确的。你只需要对你要求它做的事情做一点小小的改变。试试这个:
import module namespace search="http://marklogic.com/appservices/search" at
"/Marklogic/appservices/search/search.xqy";
declare variable $options:=
<options xmlns="http://marklogic.com/appservices/search">
<transform-results apply="raw"/>
<searchable-expression>/patent-assignments/patent-assignment</searchable-expression>
</options>;
search:search("apple", $options, 1, 1)/search:result
导入模块名称空间搜索=”http://marklogic.com/appservices/search“在
“/Marklogic/appservices/search/search.xqy”;
声明变量$options:=
/专利转让/专利转让
;
搜索:搜索(“苹果”,$options,1,1)/search:result
添加searchable expression元素后,我只返回与查询匹配的patent assignment元素:
<search:result index="1" uri="/patent.xml" path="fn:doc("/patent.xml")/patent-assignments/patent-assignment[2]" score="43008" confidence="0.664889" fitness="0.664889" xmlns="" xmlns:search="http://marklogic.com/appservices/search">
<patent-assignment>
<patent-assignors>
<patent-assignor>
<name>APPLE</name>
</patent-assignor>
</patent-assignors>
<patent-assignees>
<patent-assignee>
<name>GOOGLE INC</name>
</patent-assignee>
</patent-assignees>
</patent-assignment>
</search:result>
苹果
谷歌公司