19
votes

I am working on Solr 4+.

I have several fields into my solr schema with different solr field types.

Does the search on text field and string field differs?

Because I am trying to search on string field (which is a copy field of few facet fields) which does not work as expected. The destination string field is indexed and stored both.

However, when I change destination field which a text field (only indexed), it works fine.

Can you suggest why this happens? What is exactly the difference between text and string fields in solr in respect to searches?

2

2 Answers

34
votes

TextFields usually have a tokenizer and text analysis attached, meaning that the indexed content is broken into separate tokens where there is no need for an exact match - each word / token can be matched separately to decide if the whole document should be included in the response.

StrFields cannot have any tokenization or analysis / filters applied, and will only give results for exact matches. If you need a StrField with analysis or filters applied, you can implement this using a TextField and a KeywordTokenizer.

0
votes

A general text field that has reasonable, generic cross-language defaults: it tokenizes with StandardTokenizer, removes stop words from case-insensitive "stopwords.txt" (empty by default), and down cases. At query time only, it also applies synonyms.

The StrField type is not analyzed, but indexed/stored verbatim.