Текстовое поле Solr и поле String - другое поведение поиска
Я работаю над Solr 4 +.
У меня есть несколько полей в моей схеме solr с разными типами полей solr.
Различается ли поиск в текстовом поле и поле строки?
Потому что я пытаюсь искать в поле строки (которое является полем копий нескольких полей фасетов), которое не работает должным образом. Поле строки назначения индексируется и сохраняется как.
Однако, когда я изменяю поле назначения, которое текстовое поле (только индексированное), оно отлично работает.
Вы можете предположить, почему это происходит? В чем разница между текстовыми и строковыми полями в solr в отношении поиска?
Ответы
Ответ 1
TextFields
обычно имеют прикрепленный токенизатор и текстовый анализ, что означает, что индексированный контент разбит на отдельные токены, где нет необходимости в точном совпадении - каждое слово/токен можно сопоставить отдельно, чтобы решить, должен ли весь документ быть включенным в ответ.
StrFields
не может быть применена к токенизации или анализу/фильтрам, а результаты будут даны только для точных совпадений. Если вам нужен StrField с применением анализа или фильтров, вы можете реализовать это с помощью TextField
и KeywordTokenizer
.
Ответ 2
Общее текстовое поле, которое имеет разумные общие межпотоковые значения по умолчанию: оно токенизирует с помощью StandardTokenizer, удаляет стоп-слова из без учета регистра "stopwords.txt" (пусто по умолчанию) и вниз. Только во время запроса также применяются синонимы.
Тип StrField не анализируется, а индексируется/хранится дословно.