基于字段或元素范围索引的分面
Facet based on field or element range index
我有一个如下所示的 xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<document-envelope xmlns="http://abc/content-repo/envelope">
<metadata xmlns="http://abc/content-repo/metadata">
<name>48363ff1d9e0a48dc9e578f0f4519564628fdbbc.docx</name>
<SubjectMatter>
Combination Therapy; Comparative Efficacy; Pharmacokinetics/Pharmacodynamics; Safety; Serum Drug Levels; Therapeutic Drug Monitoring (TDM)
</SubjectMatter>
</metadata>
</document-enevelope>
我为 SubjectMatter
创建了一个字段和字段范围索引。
我的难题是,当我为 SubjectMatter
创建分面时,它将 <SubjectMatter>
中的全部内容视为一个唯一实体。但我想制作';'分隔文本作为唯一实体。例如:对于上面的示例 xml,我希望 facet 为
Combination Therapy
Comparative Efficacy
Pharmacokinetics/Pharmacodynamics
Safety
Serum Drug Levels
Therapeutic Drug Monitoring (TDM)
我知道我可以通过解析字符串并在构造信封时将每个单独添加 SubjectMatter
来实现这一点。
我想知道是否有另一种方法可以做到这一点,而无需在文档信封中创建多个 SubjectMatter
xml 标签?
以下是示例 xml 文件..
<?xml version="1.0" encoding="UTF-8"?>
<document-envelope xmlns="http://abc/content-repo/envelope">
<metadata xmlns="http://abc/content-repo/metadata">
<name>2747f031c217f9e23f1e2c1e600ee48cc703494a.pdf</name>
<context>GMA</context>
<mime-type>application/pdf</mime-type>
<file-type>PDF</file-type>
<virtual-path>KN</virtual-path>
<id>54a7b5298b5574ea7e5b743a2817d6c5ad723ac4</id>
<uploadDate>2016-07-13T02:55:00.000-05:00</uploadDate>
<remoteURL>https://teams.abbvienet.com/gprd/gma/KM/Lists/Library/Attachments/1120/Hawaii Derm 2013 Meeting Summary CSM Ed.pdf?Web=1</remoteURL>
<displayFilename>Hawaii Derm 2013 Meeting Summary CSM Ed.pdf</displayFilename>
<Title xmlns="http://abc/content-repo/metadata/gma">Hawaii Derm 2013 Meeting Summary CSM Ed</Title>
<Modified-Date xmlns="http://abc/content-repo/metadata/gma">2016-07-13T02:55:00.000-05:00</Modified-Date>
<author>a-gangapx</author>
<Presenter xmlns="http://abc/content-repo/metadata/gma">US MSLs</Presenter>
<Organization xmlns="http://abc/content-repo/metadata/gma">Malhotra, Kailash</Organization>
<Description xmlns="http://abc/content-repo/metadata/gma">Regional Medical Meeting Report</Description>
<Therapeutic-Area xmlns="http://abc/content-repo/metadata/gma">7. Immuno - Dermatology</Therapeutic-Area>
<Disease-State xmlns="http://abc/content-repo/metadata/gma">7. Ps</Disease-State>
<Material-Type xmlns="http://abc/content-repo/metadata/gma">Report</Material-Type>
<SubjectMatter xmlns="http://abc/content-repo/metadata/gma">Safety; Pediatrics</SubjectMatter>
<Region xmlns="http://abc/content-repo/metadata/gma">United States</Region>
<Language xmlns="http://abc/content-repo/metadata/gma">English</Language>
<Publication-Date xmlns="http://abc/content-repo/metadata/gma">2013-02-10T00:00:00.000-06:00</Publication-Date>
<Active-Date xmlns="http://abc/content-repo/metadata/gma">2014-02-07T00:00:00.000-06:00</Active-Date>
<Expiration-Date xmlns="http://abc/content-repo/metadata/gma">2014-01-01T00:00:00.000-06:00</Expiration-Date>
<Congress xmlns="http://abc/content-repo/metadata/gma">Other</Congress>
<Congress-Year xmlns="http://abc/content-repo/metadata/gma">2013</Congress-Year>
<Endorsement xmlns="http://abc/content-repo/metadata/gma">MSL</Endorsement>
</metadata>
</document-envelope>
如果您想为每个定界值单独计算分面数,那么我认为您必须创建单独的元素。如果您只关心计算 组合 值的匹配数,那么您可以构建自定义约束(假设您使用的是搜索 API),并在查询时解析它们时间。不过,您可能仍需要对值的重叠组合进行特殊处理。
通过构建 Aggregate User-Defined Function plugin 可以在不创建多个 SubjectMatter
元素的情况下对单独的值进行计数;但是,除非您对文档没有任何控制权,否则拆分它们可能会简单得多。
对于 MarkLogic 方面的本地使用,那么我认为重构你的信封是最合乎逻辑的方法。
如果您想保持数据原样,那么您可能认为这种方法可以接受:
在 subjectMatter 元素上创建一个字段*
- 添加词典
- 并自定义标记器以仅在“;”上拆分
此时,您已经按照自己的方式在词典中获得了信息。
然后查看 about "Browsing with Lexicons 文档中提供的工具是否对您足够。
- 为什么是字段而不是 elementWordLexicon?如果我们使用一个字段,那么我们可以使用管理界面中可用的设置。如果我们使用 elementWordLexicon,那么我们将注册自定义分词器。我描述的字段选项在索引时确实有更多的开销。但是,实现起来稍微容易一些。
我有一个如下所示的 xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<document-envelope xmlns="http://abc/content-repo/envelope">
<metadata xmlns="http://abc/content-repo/metadata">
<name>48363ff1d9e0a48dc9e578f0f4519564628fdbbc.docx</name>
<SubjectMatter>
Combination Therapy; Comparative Efficacy; Pharmacokinetics/Pharmacodynamics; Safety; Serum Drug Levels; Therapeutic Drug Monitoring (TDM)
</SubjectMatter>
</metadata>
</document-enevelope>
我为 SubjectMatter
创建了一个字段和字段范围索引。
我的难题是,当我为 SubjectMatter
创建分面时,它将 <SubjectMatter>
中的全部内容视为一个唯一实体。但我想制作';'分隔文本作为唯一实体。例如:对于上面的示例 xml,我希望 facet 为
Combination Therapy
Comparative Efficacy
Pharmacokinetics/Pharmacodynamics
Safety
Serum Drug Levels
Therapeutic Drug Monitoring (TDM)
我知道我可以通过解析字符串并在构造信封时将每个单独添加 SubjectMatter
来实现这一点。
我想知道是否有另一种方法可以做到这一点,而无需在文档信封中创建多个 SubjectMatter
xml 标签?
以下是示例 xml 文件..
<?xml version="1.0" encoding="UTF-8"?>
<document-envelope xmlns="http://abc/content-repo/envelope">
<metadata xmlns="http://abc/content-repo/metadata">
<name>2747f031c217f9e23f1e2c1e600ee48cc703494a.pdf</name>
<context>GMA</context>
<mime-type>application/pdf</mime-type>
<file-type>PDF</file-type>
<virtual-path>KN</virtual-path>
<id>54a7b5298b5574ea7e5b743a2817d6c5ad723ac4</id>
<uploadDate>2016-07-13T02:55:00.000-05:00</uploadDate>
<remoteURL>https://teams.abbvienet.com/gprd/gma/KM/Lists/Library/Attachments/1120/Hawaii Derm 2013 Meeting Summary CSM Ed.pdf?Web=1</remoteURL>
<displayFilename>Hawaii Derm 2013 Meeting Summary CSM Ed.pdf</displayFilename>
<Title xmlns="http://abc/content-repo/metadata/gma">Hawaii Derm 2013 Meeting Summary CSM Ed</Title>
<Modified-Date xmlns="http://abc/content-repo/metadata/gma">2016-07-13T02:55:00.000-05:00</Modified-Date>
<author>a-gangapx</author>
<Presenter xmlns="http://abc/content-repo/metadata/gma">US MSLs</Presenter>
<Organization xmlns="http://abc/content-repo/metadata/gma">Malhotra, Kailash</Organization>
<Description xmlns="http://abc/content-repo/metadata/gma">Regional Medical Meeting Report</Description>
<Therapeutic-Area xmlns="http://abc/content-repo/metadata/gma">7. Immuno - Dermatology</Therapeutic-Area>
<Disease-State xmlns="http://abc/content-repo/metadata/gma">7. Ps</Disease-State>
<Material-Type xmlns="http://abc/content-repo/metadata/gma">Report</Material-Type>
<SubjectMatter xmlns="http://abc/content-repo/metadata/gma">Safety; Pediatrics</SubjectMatter>
<Region xmlns="http://abc/content-repo/metadata/gma">United States</Region>
<Language xmlns="http://abc/content-repo/metadata/gma">English</Language>
<Publication-Date xmlns="http://abc/content-repo/metadata/gma">2013-02-10T00:00:00.000-06:00</Publication-Date>
<Active-Date xmlns="http://abc/content-repo/metadata/gma">2014-02-07T00:00:00.000-06:00</Active-Date>
<Expiration-Date xmlns="http://abc/content-repo/metadata/gma">2014-01-01T00:00:00.000-06:00</Expiration-Date>
<Congress xmlns="http://abc/content-repo/metadata/gma">Other</Congress>
<Congress-Year xmlns="http://abc/content-repo/metadata/gma">2013</Congress-Year>
<Endorsement xmlns="http://abc/content-repo/metadata/gma">MSL</Endorsement>
</metadata>
</document-envelope>
如果您想为每个定界值单独计算分面数,那么我认为您必须创建单独的元素。如果您只关心计算 组合 值的匹配数,那么您可以构建自定义约束(假设您使用的是搜索 API),并在查询时解析它们时间。不过,您可能仍需要对值的重叠组合进行特殊处理。
通过构建 Aggregate User-Defined Function plugin 可以在不创建多个 SubjectMatter
元素的情况下对单独的值进行计数;但是,除非您对文档没有任何控制权,否则拆分它们可能会简单得多。
对于 MarkLogic 方面的本地使用,那么我认为重构你的信封是最合乎逻辑的方法。
如果您想保持数据原样,那么您可能认为这种方法可以接受:
在 subjectMatter 元素上创建一个字段*
- 添加词典
- 并自定义标记器以仅在“;”上拆分
此时,您已经按照自己的方式在词典中获得了信息。
然后查看 about "Browsing with Lexicons 文档中提供的工具是否对您足够。
- 为什么是字段而不是 elementWordLexicon?如果我们使用一个字段,那么我们可以使用管理界面中可用的设置。如果我们使用 elementWordLexicon,那么我们将注册自定义分词器。我描述的字段选项在索引时确实有更多的开销。但是,实现起来稍微容易一些。