【问题标题】:Wildcarded search with "*" and "?" in search:search not working properly使用“*”和“?”进行通配符搜索在搜索中:搜索无法正常工作
【发布时间】:2021-01-27 12:55:31
【问题描述】:

我们需要同时使用字符“*”和“?”来实现通配符搜索。如

中所述

https://docs.marklogic.com/10.0/guide/search-dev/wildcard

通配符 Marklogic Server 支持两个通配符:* 和 ?。

  • 匹配零个或多个非空格字符。 ?恰好匹配一个非空格字符。 例如,he* 将匹配以 he 开头的任何单词,例如 he、her、help、hello、heilton 等。另一方面,他?只会匹配以 he 开头的三个字母的单词,例如 hem、hen 等。

但我们按照以下方式进行搜索,

let $options := <options xmlns="http://marklogic.com/appservices/search">   
                  <constraint name="DocumentTitle">
                    <word type="xs:string" facet="false">
                      <element ns="http://marklogic.com/nondeliverable" name="DocumentTitle"/>
                      <search:term-option>wildcarded</search:term-option>, 
                       <search:term-option>case-insensitive</search:term-option>,
                       <search:term-option>diacritic-insensitive</search:term-option>,
                       <search:term-option>unstemmed</search:term-option>
                    </word>
                  </constraint>
                  <return-query>true</return-query>
                  <return-qtext>true</return-qtext>
                  <return-metrics>true</return-metrics>
                </options>
                
return (search:search("(DocumentTitle:(medi*ation))",$options,1,10),search:search("(DocumentTitle:(medi?ation))",$options,1,10))

两个搜索查询都返回相同的计数。但是如果我们进行搜索

cts:search(fn:doc(),cts:element-word-query(xs:QName("nd:DocumentTitle"),"medi?ation",("wildcarded"))),cts:search(fn:doc(),cts:element-word-query(xs:QName("nd:DocumentTitle"),"medi*ation",("wildcarded"))) 

计数不同并返回正确的结果。

我们如何实现同时使用字符“*”和“?”的通配符搜索在搜索中:搜索正确的结果。

【问题讨论】:

    标签: marklogic


    【解决方案1】:

    cts:search 默认运行过滤,而search:search 默认运行未过滤。将filtered 作为选项传递给cts:search,看看它是否返回与search:search 相同的结果。

    或者,您也可以提供 search-option 以使 search:search 行为过滤:

    <search-option>filtered</search-option>
    

    顺便说一句,过滤很慢,理想情况下,您应该选择不需要过滤的索引设置。检查您是否启用了通配符设置。

    HTH!

    【讨论】:

      猜你喜欢
      • 2020-05-08
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 2019-08-04
      • 2021-11-10
      相关资源
      最近更新 更多