【问题标题】:MarkLogic search:search not returning snippetsMarkLogic 搜索:搜索不返回片段
【发布时间】:2013-06-24 22:36:52
【问题描述】:

我正在对 MarkLogic 数据库执行search:search。我可以搜索术语“pineal”并使用 sn-ps 返回 297 个结果。我可以搜索“city:Vancouver”并使用 sn-ps 返回 83 个结果。查询“pineal OR city:Vancouver”使用 sn-ps 返回 374 个结果。但是,查询“pineal AND city:Vancouver”返回计数为 6 个结果,但没有结果元素,也没有 sn-ps。知道为什么我没有收到结果文本吗?

谢谢! 拉维哈

【问题讨论】:

  • 您能否提供一些您希望查询匹配的示例 XML?
  • 另外,“city:”约束是如何定义的?

标签: search marklogic


【解决方案1】:

我似乎找到了问题所在。

正在搜索的 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>"

我的 $options 声明中有以下声明:

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

当我取出这条语句时,搜索会按预期返回结果。我很好奇为什么 searchable-expression 语句会破坏搜索结果。

感谢大家的cmets。

【讨论】:

  • 我为您修复了 XML 格式。 (点击“编辑”查看如何正确格式化代码。)您只需编辑现有答案,无需发布新答案。
  • 可搜索的表达式并没有完全破坏搜索结果;它使计数不准确。计数是根据未过滤的(基本上是可能匹配的入围文档)结果生成的,而您看到的实际结果是经过过滤的,即;检查以消除误报。在这种情况下,检查潜在匹配是否在可搜索表达式内是过滤过程的一部分;因此计数太高。如果(例如)文档中有多个city,您可能还会看到计数较低;每个文档在估算中只计算一次。
  • 您可能会问,为什么将城市和州等元素作为单独的结果返回。只将讲座作为结果返回并允许 search:search 为您提供有趣位的 sn-ps 不是更有意义吗?它还允许您将结果显示为讲座列表,同时将城市和州等内容显示为讲座的元数据细节,就像它们一样。
  • 或者您是否使用该搜索表达式将搜索限制为这些元素中的内容?有更好的方法来做到这一点。我认为一个领域在这里最合适。转到管理界面中的数据库配置。更多细节可以在这里找到:docs.marklogic.com/guide/admin/fields#chapter
猜你喜欢
  • 2019-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
相关资源
最近更新 更多