我正在使用MarkLogic THSR功能来创建“公司”术语的同义词。我能够得到理想的结果。当我在“公司”一词的基础上搜索时,我只会突出显示“公司”字样。但是,我需要突出显示所有同义词。
我正在使用cts:突出显示结果时突出显示文字。
我的同义词库XML如下:
<thesaurus xmlns="http://marklogic.com/xdmp/thesaurus">
<entry>
<term>Company</term>
<synonym>
<term>Services</term>
<part-of-speech>noun</part-of-speech>
</synonym>
<synonym>
<term>Industry</term>
<part-of-speech>noun</part-of-speech>
</synonym>
<synonym>
<term>Firm</term>
<part-of-speech>noun</part-of-speech>
</synonym>
<synonym>
<term>Business</term>
<part-of-speech>noun</part-of-speech>
</synonym>
<synonym>
<term>Corporation</term>
<part-of-speech>noun</part-of-speech>
</synonym>
<synonym>
<term>House</term>
<part-of-speech>noun</part-of-speech>
</synonym>
<synonym>
<term>Establishment</term>
<part-of-speech>noun</part-of-speech>
</synonym>
<synonym>
<term>Agency</term>
<part-of-speech>noun</part-of-speech>
</synonym>
<synonym>
<term>Office</term>
<part-of-speech>noun</part-of-speech>
</synonym>
<synonym>
<term>Bureau</term>
<part-of-speech>noun</part-of-speech>
</synonym>
<synonym>
<term>Organization</term>
<part-of-speech>noun</part-of-speech>
</synonym>
<synonym>
<term>Institution</term>
<part-of-speech>noun</part-of-speech>
</synonym>
<synonym>
<term>Operation</term>
<part-of-speech>noun</part-of-speech>
</synonym>
<synonym>
<term>Enterprise</term>
<part-of-speech>noun</part-of-speech>
</synonym>
<synonym>
<term>Venture</term>
<part-of-speech>noun</part-of-speech>
</synonym>
<synonym>
<term>Undertaking</term>
<part-of-speech>noun</part-of-speech>
</synonym>
</entry>
</thesaurus>
有没有其他方法来突出这些事情或我做错了什么?请帮帮我。
我使用同义词库的查询如下:
cts:search(//TEXT, thsr:expand(cts:word-query("TEXT"), thsr:lookup("/myThsrDocs/syn.xml", "TEXT"),(),(),()))
答案 0 :(得分:0)
通常,您使用https://docs.marklogic.com/thsr:expand来扩展您的查询,然后将结果作为XML传递给https://docs.marklogic.com/search:resolve,这会突出显示。
search:resolve(
document {
thsr:expand(
cts:word-query("Company"), $THESAURUS-ENTRIES, (), (), ()) }/*)
thsr:expand
函数使用您的初始cts:query
项和您的同义词条目来编写扩展查询。 document { ... }/*
表达式将cts:query
项转换为XML元素,这是search:resolve
期望的结果。