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