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

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

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

отличается ли поиск по текстовому полю и строковому полю?

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

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

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

2 ответов


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

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


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

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