ContentFieldOptions
是 CreateSearchIndex 及相关函数的一个选项,允许指定用于处理被索引内容中不同字段的选项.
更多信息
- ContentFieldOptions-><|"name1"->opts1,"name2"->opts2,…|> 指定名为 namei 的字段应使用在关联 optsi 中给定的选项建立索引.
- 每个optsi 关联的可能的值为:
-
"BulkRetrievalOptimized" 是否为字段加上索引以优化批量检索 "CamelCaseMatching" 是否使用驼峰式来匹配多单词形式 "DeleteStopWords" 加上索引前是否删掉停用词 "IgnoreCase" 索引和匹配时是否忽略大小写 "Language" 设想的字段的语种 "LengthWeighted" 是否较短字段的匹配更占优 "Searchable" 字段是否是可检索的 "StemmingMethod" 是否提取单词的词干以用于索引和匹配 "Stored" 是否将字段的文字内容存储在索引中 "Tokenized" 索引前是否应把字段 tokenize "Type" 字段的整体类型 "Weight" 搜索时字段的权重 - 字段的常见类型包括:"Title"、"Text"、"String"、"Date"、"DateTime"、"Integer"、"Real"、"Boolean".
- 不同的字段类型被赋予不同的默认权重.
- 缺省情况下,如 "Title" 和 "Integer" 这样的字段类型被保存起来,而如 "Text" 这样的字段类型则不被保存.
- 与 "String" 或 "Date" 不同,缺省情况下,将 "Title" 和 "Text" 词条化,并清除其中的停用词.
- 缺省情况下,所有字段类型都是可检索的.
- 缺省情况下,没有对任何字段类型进行批量检索优化.
- 缺省情况下,和较短字段的匹配相比,较长字段的匹配对最终分数的影响要小. 要禁用此行为(所有字段类型的默认情况),可将 "LengthWeighted" 设为 False.
- "StemmingMethod" 的默认值为 "Porter". 其他替代值包括 "Kstem" 和 None.
- 如果为某个类型明确指定了选项,则该显式选项覆盖缺省的选项.
- 缺省情况下,All->opts 可用来表示所有类型都使用选项设置.
范例
基本范例 (12)
index = CreateSearchIndex[{ContentObject[<|"Field1" -> "the dog is good", "Field2" -> "le chien est bon"|>]}, ContentFieldOptions -> <|"Field2" -> <|"Language" -> "French"|>|>];忽略法语停用词 "le" 和 "la",找到一个匹配的实例:
TextSearch[index, "la chien"]index = CreateSearchIndex[{ContentObject[<|"Field1" -> "the dog is good"|>]}, ContentFieldOptions -> <|"Field1" -> <|"Stored" -> True|>|>];TextSearch[index, "dog", "Field1"]设置 "Field2" 的字段类型,使它在搜索结果排序时权重更大,同时在内容对象中返回它的值:
index = CreateSearchIndex[{ContentObject[<|"ArticleTitle" -> "The Long Road Ahead"|>]}, ContentFieldOptions -> <|"ArticleTitle" -> <|"Type" -> "Title"|>|>];TextSearch[index, "long road"]如果大小写的匹配很重要,可以把字段的 "IgnoreCase" 设为 False:
index = CreateSearchIndex[{ContentObject[<|"ProductId" -> "SBcFrX"|>]}, ContentFieldOptions -> <|"ProductId" -> <|"IgnoreCase" -> False|>|>];TextSearch[index, "SBCFrX"][All]对于非文字内容,需要时可将 "CamelCaseMatching" 设为无效:
index = CreateSearchIndex[{ContentObject[<|"ProductId" -> "SrdxEldk"|>]}, ContentFieldOptions -> <|"ProductId" -> <|"CamelCaseMatching" -> False|>|>];如果启用 "CamelCaseMatching",此处就会找到匹配的结果:
TextSearch[index, "Srdx Eldk"][All]index = CreateSearchIndex[{ContentObject[<|"ProductId" -> "Alice-Eldk"|>]}, ContentFieldOptions -> <|"ProductId" -> <|"StemmingMethod" -> None|>|>];TextSearch[index, "alic"][All]为了在结果中有更高的排名,可以指定字段的 "Weight":
index = CreateSearchIndex[{ContentObject[<|"Keyword" -> "apple", "Field2" -> "orange"|>], ContentObject[<|"Keyword" -> "orange", "Field2" -> "apple"|>]}, ContentFieldOptions -> <|"Keyword" -> <|"Weight" -> 10, "Stored" -> True|>|>];当匹配出现在 "Keyword" 字段中,分数会被乘以 "Weight" 10:
TextSearch[index, "apple"][All, "Score"]不能对不可检索的字段进行搜索,但如果有保存的话,可以从所得的内容对象中获取:
index = CreateSearchIndex[{ContentObject[<|"Field1" -> "apple", "Field2" -> "one fruit"|>], ContentObject[<|"Field1" -> "apple, orange", "Field2" -> "two fruits"|>]},
ContentFieldOptions -> <|"Field2" -> <|"Stored" -> True, "Searchable" -> False|>|>];TextSearch[index, "fruit"][All]TextSearch[index, "apple"][1, "Field2"]index = CreateSearchIndex[{ContentObject[<|"Title" -> "apple or pear", "Text" -> "eat an apple, or a pear"|>], ContentObject[<|"Title" -> "juices", "Text" -> "is this apple or pear juice?"|>]}, ContentFieldOptions -> <|"Title" -> <|"DeleteStopWords" -> False|>|>];TextSearch[index, "or"][All]缺省情况下,和较短字段的匹配相比,较长字段的匹配对最终分数的影响要小:
index = CreateSearchIndex[{ContentObject[<|"Title" -> "doc1", "Text" -> "apple"|>], ContentObject[<|"Title" -> "doc2", "Text" -> "apple orange banana pear"|>]}];TextSearch[index, "apple"][All, {"Title", "Score"}]可以通过将 "LengthWeighted" 设为 False 来禁用该行为:
index = CreateSearchIndex[{ContentObject[<|"Title" -> "doc1", "Text" -> "apple"|>], ContentObject[<|"Title" -> "doc2", "Text" -> "apple orange banana pear"|>]},
ContentFieldOptions -> <|"Text" -> <|"LengthWeighted" -> False|>|>];TextSearch[index, "apple"][All, {"Title", "Score"}]将 "Tokenized" 设为 False 以要求对字段进行逐字匹配:
index = CreateSearchIndex[{<|"Field1" -> "orange", "Field2" -> "ExactlyThisApple"|>},
ContentFieldOptions -> <|"Field2" -> <|"Tokenized" -> False|>|>];TextSearch[index, SearchQueryString["Field2:ExactlyThisApple"]]["Count"]TextSearch[index, SearchQueryString["ExactlyThisApple"]]["Count"]TextSearch[index, SearchQueryString["Field2:apple"]]["Count"]TextSearch[index, SearchQueryString["Field2:\"Exactly This Apple\""]]["Count"]TextSearch[index, SearchQueryString["Field2:exactlythisapple"]]["Count"]当字段被用作对文档进行加权时,设置 "BulkRetrievalOptimized" 为 True 可以提高性能:
docs = Table[
ContentObject[<|"Text" -> StringRiffle[RandomChoice[{"apple", "orange", "pear", "banana"}, RandomInteger[{1000, 2000}]]], "Quality" -> RandomChoice[{"high", "medium", "low"}]|>], {1000}];index1 = CreateSearchIndex[docs,
ContentFieldOptions -> <|"Quality" -> <|"BulkRetrievalOptimized" -> True|>|>];
index2 = CreateSearchIndex[docs,
ContentFieldOptions -> <|"Quality" -> <|"Stored" -> True|>|>];Quantity[First@RepeatedTiming[TextSearch[index1, "apple", DocumentWeightingRules -> {"Quality" -> {"high" -> 2, "medium" -> 1, "low" -> .5}}]] * 1000, "ms"]Quantity[First@RepeatedTiming[TextSearch[index2, "apple", DocumentWeightingRules -> {"Quality" -> {"high" -> 2, "medium" -> 1, "low" -> .5}}]] * 1000, "ms"]文本
Wolfram Research (2016),ContentFieldOptions,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ContentFieldOptions.html (更新于 2017 年).
CMS
Wolfram 语言. 2016. "ContentFieldOptions." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2017. https://reference.wolfram.com/language/ref/ContentFieldOptions.html.
APA
Wolfram 语言. (2016). ContentFieldOptions. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ContentFieldOptions.html 年
BibTeX
@misc{reference.wolfram_2026_contentfieldoptions, author="Wolfram Research", title="{ContentFieldOptions}", year="2017", howpublished="\url{https://reference.wolfram.com/language/ref/ContentFieldOptions.html}", note=[Accessed: 05-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_contentfieldoptions, organization={Wolfram Research}, title={ContentFieldOptions}, year={2017}, url={https://reference.wolfram.com/language/ref/ContentFieldOptions.html}, note=[Accessed: 05-September-2026]}