如何为存储在MarkLogic中的文档生成关键字?

时间:2012-08-06 19:16:07

标签: keyword marklogic

我需要为加载到MarkLogic的一组文档中的每个文档生成一个关键字列表。我正在考虑运行cts:针对文档集的独特术语,但无法弄清楚如何获取每个文档的关键字列表,而不是与该集合相关的术语列表。有人可以提出解决方案吗?

2 个答案:

答案 0 :(得分:3)

简单地遍历感兴趣的文档并分别为每个文档调用cts:distinct-terms:

for $doc in doc()
return
    cts:distinctive-terms($doc)

HTH!

答案 1 :(得分:3)

您使用score=logtf选项吗?当我尝试时,停止词的分数上升了很多。如果您考虑一下这是有道理的:数据库不能再使用IDF来清除它们。但是,如果您只想要TF,则可以使用停用词列表进行过滤 - 如已建议的那样。

但是logtfidf得分应该会自然地惩罚停止词。您可以设置min-val选项或其他选项来调整结果。例如,在这里我将min-val设置为27,因为停止词开始出现在26处。正确的选项取决于现有的数据库内容,因为IDF。

cts:distinctive-terms(
  text { 'I need to generate a list of keywords for each document in a set of documents that are loaded into MarkLogic. I am considering running cts:distinctive-terms against the set of documents, but cannot figure out how to get a list of keywords for each document rather than a list of terms relevant to the set. Can anyone suggest a solution?' },
  <options xmlns="cts:distinctive-terms"
   xmlns:db="http://marklogic.com/xdmp/database">
    <min-val>27</min-val>
    <use-db-config>false</use-db-config>
    <db:stemmed-searches>true</db:stemmed-searches>
    <db:word-searches>false</db:word-searches>
    <db:fast-phrase-searches>false</db:fast-phrase-searches>
  </options>)/cts:term/cts:word-query/cts:text/string()
=>
load
set
solution
term
document
list
keyword