Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Marklogic JSON文档字段索引_Marklogic_Marklogic 8 - Fatal编程技术网

Marklogic JSON文档字段索引

Marklogic JSON文档字段索引,marklogic,marklogic-8,Marklogic,Marklogic 8,我有一个包含所有json文档的ML数据库。。我对此文档的字段创建有问题。。假设我有一份文件 { "id": "1452016", "name": "ALEXA488", "identifyingInfo": { "preparation": { "chemicalConjugations": [{ "name": "ALEXA 488" }] } } }

我有一个包含所有json文档的ML数据库。。我对此文档的字段创建有问题。。假设我有一份文件

{
    "id": "1452016",
    "name": "ALEXA488",
    "identifyingInfo": {
        "preparation": {
            "chemicalConjugations": [{
                "name": "ALEXA 488"
            }]
        }
    }
}
我为顶级json元素
name
创建了一个字段

{
 "field-name": "concept_name",
 "field-path": [
  {
    "path": "/name",
    "weight": 1
  }
  ],
  "word-lexicon" :["http://marklogic.com/collation/en/S1"]
}
我也在这个字段上创建了一个字段范围索引

现在当我这样搜索的时候

xquery version "1.0-ml";
import module namespace search = "http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy";


let $search := ' (concept_name:(*ALEXA*))'

let $options :=
   <options xmlns="http://marklogic.com/appservices/search">
    <constraint name="collection">
        <collection prefix=""/>
    </constraint>
    <constraint name="concept_name">
        <word>
            <field name="concept_name" collation="http://marklogic.com/collation/en/S1"/>
        </word>
    </constraint>
    <term>
        <term-option>case-insensitive</term-option>
        <term-option>punctuation-insensitive</term-option>
        <term-option>whitespace-insensitive</term-option>
        <term-option>wildcarded</term-option>
    </term>
    <return-facets>false</return-facets>
    <return-values>false</return-values>
    <return-constraints>false</return-constraints>
    <return-frequencies>false</return-frequencies>
    <return-qtext>false</return-qtext>
    <search-option>format-json</search-option>
    <search-option>score-simple</search-option>
</options>

let $start := 1
let $page-length :=1

 let $result := search:search($search, $options, $start, $page-length)  

return $result
xquery版本“1.0-ml”;
导入模块命名空间搜索=”http://marklogic.com/appservices/search“在“/MarkLogic/appservices/search/search.xqy”;
let$search:='(概念名称:(*ALEXA*)”
让$options:=
不区分大小写
标点不敏感
不区分空格
通配符
假的
假的
假的
假的
假的
格式json
得分简单
让$start:=1
设$page length:=1
让$result:=搜索:搜索($search,$options,$start,$page length)
返回$result
搜索正在匹配顶级
名称
以及
识别信息/制剂/化学共轭/名称


字段路径应该是什么,以便它只匹配顶级json元素,在本例中,
name

您的字段路径看起来很好。你可以跟我核对一下

cts:field-value-match("concept_name", "*")

但你在尝试使用通配符。您是否在字段上启用了“尾随通配符搜索”?您还想启用“一个/两个/三个字符搜索”吗?

您的字段路径看起来不错。你可以跟我核对一下

cts:field-value-match("concept_name", "*")

但你在尝试使用通配符。您是否在字段上启用了“尾随通配符搜索”?您还想启用“一个/两个/三个字符搜索”吗?

我已经完成了这项工作。将约束替换为:

<constraint name="concept_name">
  <value>
    <field name="concept_name" />
  </value>
</constraint>

在您的字段中,启用字段值搜索后续通配符搜索


我在一个数据库中创建了三个文档;一个和您的示例一样,一个只有/name中的“ALEXA”,另一个只有另一个name中的“ALEXA”。我的测试正确地找到了这两个文档

这是我做的。将约束替换为:

<constraint name="concept_name">
  <value>
    <field name="concept_name" />
  </value>
</constraint>

在您的字段中,启用字段值搜索后续通配符搜索


我在一个数据库中创建了三个文档;一个和您的示例一样,一个只有/name中的“ALEXA”,另一个只有另一个name中的“ALEXA”。我的测试正确地找到了这两个文档

我主要关心的是,它还匹配子元素
名称(IdentifyingInfo/preparation/Chemical共轭/name)
,我只想在顶级
名称上匹配。我想知道是否需要在字段中指定任何其他内容来告诉它只匹配顶级元素。我主要关心的是,它还匹配子元素
名称(IdentificationInfo/Preparency/Chemical共轭/name)
,我只想匹配顶级
名称
。我想知道是否需要在字段中指定任何其他内容,以告诉它仅匹配顶级元素。当文档的顶级名称和其他名称中包含ALEXA时,搜索片段是否也在其他名称中显示hit?对我来说,当我将约束改为
value
而不是
word
时,我没有得到任何点击词干搜索:基本
单词搜索
字段值搜索
字段值位置
快速短语搜索
尾随通配符搜索
尾随通配符位置
三字符搜索`($search,$options))/@total fn:count(cts:search(fn:doc(),cts:query(search:parse($search,$options)))我得到了不同的计数,cts:search计数是正确的计数@total是一个估计值,由索引分辨率驱动;fn:count使用过滤。有关更多详细信息,请参阅。可能有一些索引可以使数字相同。oka,但我仍然不明白为什么search:search与字段中不存在的文本相匹配。是吗当您的文档的顶部名称和其他名称中包含ALEXA时,您的搜索片段也会在其他名称中显示hit?对于我来说,当我将约束更改为
value
而不是
word
时,我没有得到任何命中率…`词干搜索:基本
word搜索
字段值搜索
字段值位置
>,
快速短语搜索
尾随通配符搜索
尾随通配符位置
三字符搜索`打开。执行搜索时:解析(搜索:解析($search,$options))/@total fn:count(cts:search(fn:doc(),cts:query(搜索:解析($search,$options)))我得到了不同的计数,cts:search count是正确的计数@total是一个估计值,由索引分辨率驱动;fn:count使用筛选。有关更多详细信息,请参阅。可能有一些索引可以打开以使数字相同。oka,但我仍然不明白为什么search:search匹配的文本不在字段中。