Текстовое поле Solr и поле String - другое поведение поиска

Я работаю над Solr 4 +.

У меня есть несколько полей в моей схеме solr с разными типами полей solr.

Различается ли поиск в текстовом поле и поле строки?

Потому что я пытаюсь искать в поле строки (которое является полем копий нескольких полей фасетов), которое не работает должным образом. Поле строки назначения индексируется и сохраняется как.

Однако, когда я изменяю поле назначения, которое текстовое поле (только индексированное), оно отлично работает.

Вы можете предположить, почему это происходит? В чем разница между текстовыми и строковыми полями в solr в отношении поиска?

Ответ 1

TextFields обычно имеют прикрепленный токенизатор и текстовый анализ, что означает, что индексированный контент разбит на отдельные токены, где нет необходимости в точном совпадении - каждое слово/токен можно сопоставить отдельно, чтобы решить, должен ли весь документ быть включенным в ответ.

StrFields не может быть применена к токенизации или анализу/фильтрам, а результаты будут даны только для точных совпадений. Если вам нужен StrField с применением анализа или фильтров, вы можете реализовать это с помощью TextField и KeywordTokenizer.

Ответ 2

Общее текстовое поле, которое имеет разумные общие межпотоковые значения по умолчанию: оно токенизирует с помощью StandardTokenizer, удаляет стоп-слова из без учета регистра "stopwords.txt" (пусто по умолчанию) и вниз. Только во время запроса также применяются синонимы.

Тип StrField не анализируется, а индексируется/хранится дословно.