2013-06-24 61 views
0

我在MarkLogic数据库上做search:search。我可以在术语“松果”上进行搜索,并返回297个带片段的结果。我可以在“城市:温哥华”上搜索并返回83个结果,其中包含片段。查询“松果或城市:温哥华”返回374个带片段的结果。但是,查询“松果和城市:温哥华”返回6个结果的计数,但没有结果元素和片段。任何想法为什么我没有得到结果文本?MarkLogic搜索:搜索不返回片段

谢谢! Ravi Har

+0

您能否提供一些您希望查询匹配的示例XML? – mblakele

+0

另外,那个“城市:”约束是如何定义的? –

回答

0

我似乎发现了这个问题。

的XML正在搜索这个样子的:

<lecture objectType="lecture"> 
    <city>Vancouver</city> 
    <state>British Columbia</state> 
    <country>Canada</country> 
    <formattedTranscript> 
     <body class="lecture-transcript" xmlns="http://www.w3.org/1999/xhtml"> 
     ... 

全市约束看起来是这样的:

<constraint name="city"> 
    <range type="xs:string" facet="true"> 
     <element ns="" name="city"/> 
     <facet-option>frequency-order</facet-option> 
     <facet-option>descending</facet-option> 
    </range> 
</constraint>" 

我在我的$选项声明如下声明:

<searchable-expression> 
    //(formattedTranscript|title|city|state|country|objectDate) 
</searchable-expression> 

当我把这个声明拿出来,搜索返回结果如预期。我很好奇为什么可搜索表达式语句会打破搜索结果。

谢谢大家的意见。

+0

我修复了XML的格式。 (点击“编辑”查看如何正确格式化代码。)您可以编辑现有答案,无需发布新答案。 –

+0

可搜索的表达式不会完全打破搜索结果;它使计数不准确。计数基于未过滤(基本上可能匹配的候选文档)结果生成,而您看到的实际结果则被过滤,即:检查以消除误报。在这种情况下,检查潜在的匹配是否在可搜索的表达式内是过滤过程的一部分;因此计数太高。如果(比如)文档中存在多个“城市”,您可能会看到较低的计数;每份文件在估算中只计算一次。 –

+0

您可能会问,为什么要将城市和州的元素作为单个结果返回。作为结果返回讲座还是允许搜索:搜索给你一些有趣的数据片段不是更有意义吗?它也可以让你显示结果作为讲座列表,同时像城市和国家一样仅仅将元数据作为讲座的元数据细节显示出来。 – grtjn