TextSearch[source,form]
searches for files referenced by source that contain text matching form.
TextSearch[source,form,"prop"]
returns the property prop for each result.
TextSearch
TextSearch[source,form]
searches for files referenced by source that contain text matching form.
TextSearch[source,form,"prop"]
returns the property prop for each result.
Details and Options
- TextSearch supports the following basic search forms, which can be combined arbitrarily:
-
"string" complete string must occur in the document {s1,s2,…} all si must occur in the document s1|s2|… at least one of the si must occur in the document "field"s1 the si must occur in the given field FixedOrder[s1,s2,…] the si must occur in the order given Except[q] q cannot occur in the document SearchAdjustment[q,…] q occurs and is assigned a certain weight etc. Between[…],LessThan[…],… numbers etc. in particular ranges etc. occur SearchQueryString["query"] complete search-engine-style query All all indexed documents are returned - TextSearch also supports the alternative forms ContainsAll[…], ContainsAny[…] and ContainsNone[…], as well as And[…], Or[…] and Not[…].
- TextSearch allows the following to be used as sources:
-
"path" or File["path"] individual file or directory of files "name" SearchIndexObject["name"] SearchIndexObject[…] search index generated by CreateSearchIndex {obj1,obj2,…} list of objects - TextSearch[source,form] returns a SearchResultObject[…] expression.
- The properties prop can be any of the properties for ContentObject, in which case TextSearch[source,form,prop] is equivalent to SearchResultObject[…][All,prop].
- The following additional properties are supported in TextSearch[source,form,prop]:
-
"Count" total number of search results "ContentObject" search results as content objects in a list "Association" search results in an association - The property "Score" defines the default order in which search results are sorted.
- Possible options include:
-
ContentFieldOptions <||> weighting options for fields DocumentWeightingRules None weighting of documents based on the values of certain fields MaxItems All the number of items to return - Files with an extension typical of binary files as well as files that contain non-textual byte values will not be indexed or searched.
- TextSearch supports many file formats that can be imported as plain text. Some of these include: "TXT", "CSV", "JSON", "XML", "PDF", "NB", "EPS".
- TextSearch does not support most image, audio and other kinds of file formats that do not have a text component.
- TextSearch reads the "Plaintext" element of a file, which is given by Import[file, "Plaintext"].
Examples
open all close allBasic Examples (3)
Create an index over a specific directory:
index = CreateSearchIndex["ExampleData/Text"]Search for files in the specified directory that contain the word "dog" using the index:
TextSearch[index, "dog"][All]Search for files containing "man" but not "animal" using advanced query syntax and show a contextual snippet:
TextSearch[index, SearchQueryString["man -animal"]][All, "Snippet"]TextSearch can also query a directory without indexing it:
TextSearch["ExampleData/Text", "dog"]Search for files containing both words:
TextSearch["ExampleData/Text", {"dog", "lorem"}]Search for files containing either word:
TextSearch["ExampleData/Text", "dog" | "lorem"]TextSearch["ExampleData/Text", {"dog", "cat"} | "lorem"]Scope (1)
Create an index using example text:
index = CreateSearchIndex[{
"ExampleData/Text/AliceInWonderland.txt", "ExampleData/Text/OriginOfSpecies.txt",
"ExampleData/Text/LoremIpsum.txt"}]TextSearch[index, "alice"][All]TextSearch[index, {"dog", "cat"} | "lorem"][All]index2 = CreateSearchIndex["ExampleData/Text/AeneidEnglish.txt"]TextSearch[{index, index2}, "dog" | "lorem" | "Greece"][All]Options (3)
ContentFieldOptions (1)
Specify weights for the fields in the index at query time:
index = CreateSearchIndex[{ContentObject[<|"Keywords" -> {"apple", "fruit"}, "Title" -> "doc1", "Text" -> "orange"|>], ContentObject[<|"Keywords" -> {"orange", "fruit"}, "Title" -> "doc2", "Text" -> "apple"|>]}]Set a weight of 2 for the "Keywords" field:
TextSearch[index, "orange", ContentFieldOptions -> <|"Keywords" -> <|"Weight" -> 2|>|>][All]When no weight is set, "doc1" gets a higher score:
TextSearch[index, "orange"][All, {"Title", "Score"}]DocumentWeightingRules (1)
Define a "ConfidenceLevel" field and use it for document weighting:
index = CreateSearchIndex[{
ContentObject[<| "Text" -> "orange", "Title" -> "doc1", "ConfidenceLevel" -> "high"|>],
ContentObject[<| "Text" -> "orange", "Title" -> "doc2", "ConfidenceLevel" -> "low"|>]
},
ContentFieldOptions -> <|"ConfidenceLevel" -> <|"BulkRetrievalOptimized" -> True|>|>,
DocumentWeightingRules -> <|"ConfidenceLevel" -> <|"high" -> 5, "low" -> 0.5|>|>]TextSearch[index, "orange"][All, {"Title", "Score"}]Properties & Relations (1)
Possible Issues (2)
Only field weights can be specified at search time, while other content field options need to be specified at index creation time:
index = CreateSearchIndex[{ContentObject[<| "Title" -> "doc1", "Text" -> "orange"|>], ContentObject[<| "Title" -> "doc2", "Text" -> "apple"|>]}]The following search returns a result because "IgnoreCase" is True by default, and "IgnoreCase" cannot be specified at search time:
TextSearch[index, "Apple", ContentFieldOptions -> <|"Text" -> <|"IgnoreCase" -> False|>|>][All]When the same option is specified at index time, no result is returned:
index2 = CreateSearchIndex[{ContentObject[<| "Title" -> "doc1", "Text" -> "orange"|>], ContentObject[<| "Title" -> "doc2", "Text" -> "apple"|>]}, ContentFieldOptions -> <|"Text" -> <|"IgnoreCase" -> False|>|>];
TextSearch[index2, "Apple"][All]The "Score" fields of objects matched in different indices are not comparable in general:
index = CreateSearchIndex[{
ContentObject[<| "Field1" -> "orange"|>], ContentObject[<| "Field1" -> "orange orange orange apple"|>]}];
index2 = CreateSearchIndex[{
ContentObject[<| "Field1" -> "orange"|>]}];
TextSearch[{index, index2}, "orange"][All, "Score"]And indeed, in general a search on multiple indices returns results not sorted by "Score":
index = CreateSearchIndex[{
"ExampleData/Text/AliceInWonderland.txt", "ExampleData/Text/OriginOfSpecies.txt",
"ExampleData/Text/LoremIpsum.txt"}];
index2 = CreateSearchIndex["ExampleData/Text/AeneidEnglish.txt"];
TextSearch[{index, index2}, "dog" | "lorem" | "Greece"][All, "Score"]See Also
TextSearchReport SearchIndexObject ContentObject CreateSearchIndex SearchResultObject SearchIndices FindList StringCases FindTextualAnswer MailSearch
Function Repository: ConcordanceWords
Related Guides
Text
Wolfram Research (2015), TextSearch, Wolfram Language function, https://reference.wolfram.com/language/ref/TextSearch.html (updated 2017).
CMS
Wolfram Language. 2015. "TextSearch." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2017. https://reference.wolfram.com/language/ref/TextSearch.html.
APA
Wolfram Language. (2015). TextSearch. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TextSearch.html
BibTeX
@misc{reference.wolfram_2026_textsearch, author="Wolfram Research", title="{TextSearch}", year="2017", howpublished="\url{https://reference.wolfram.com/language/ref/TextSearch.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_textsearch, organization={Wolfram Research}, title={TextSearch}, year={2017}, url={https://reference.wolfram.com/language/ref/TextSearch.html}, note=[Accessed: 12-June-2026]}