Проблема в том, что вы используете тип TextField
, который выполняет токенизацию вашего текста, а затем дополнительную фильтрацию, например, в нижнем регистре и т. Д. В вашем случае у вас нет значения 12/1
в Ваш индекс, но у вас есть 2 значения, 12
и 1
, для первого и второго значений, поэтому поиск по 1/*
будет соответствовать обеим записям, поскольку поиск будет выполняться для значения 1
, созданного после токенизация вашего вклада.
Чтобы сохранить строку от токенизации, вам нужно:
- либо используйте тип
StrField
вместо этого - но в этом случае строка будет проиндексирована как есть, без строчных букв и т. Д.
- если вы хотите использовать нижний регистр и т. Д., Тогда определите новый тип для вашего поля, но используйте
solr.KeywordTokenizerFactory
в качестве токенизатора и добавьте соответствующие фильтры.
Подробнее читайте в документации DataStax . Также обратите внимание, что начиная с версии 6 тип данных по умолчанию для text
- StrField
, и вам необходимо явно определить TextField
, если вам нужен токенизация и т. Д.