Solr игнорируя косую черту - PullRequest
0 голосов
/ 15 января 2019

У меня есть поле индекса под названием: texts

Поле содержит значения, такие как: 12/1

А также: 1/12

Проблема в том, что я запрашиваю: texts:"1/*"

Он также находит 12/1 как будто косая черта не имеет никакого значения.

Как я могу ограничить результаты по порядку?

(я пробовал texts:"1\/*" и он не работает)

Тип поля:

<fieldType class="org.apache.solr.schema.TextField" name="TextField">

1 Ответ

0 голосов
/ 15 января 2019

Проблема в том, что вы используете тип TextField, который выполняет токенизацию вашего текста, а затем дополнительную фильтрацию, например, в нижнем регистре и т. Д. В вашем случае у вас нет значения 12/1 в Ваш индекс, но у вас есть 2 значения, 12 и 1, для первого и второго значений, поэтому поиск по 1/* будет соответствовать обеим записям, поскольку поиск будет выполняться для значения 1, созданного после токенизация вашего вклада.

Чтобы сохранить строку от токенизации, вам нужно:

  • либо используйте тип StrField вместо этого - но в этом случае строка будет проиндексирована как есть, без строчных букв и т. Д.
  • если вы хотите использовать нижний регистр и т. Д., Тогда определите новый тип для вашего поля, но используйте solr.KeywordTokenizerFactory в качестве токенизатора и добавьте соответствующие фильтры.

Подробнее читайте в документации DataStax . Также обратите внимание, что начиная с версии 6 тип данных по умолчанию для text - StrField, и вам необходимо явно определить TextField, если вам нужен токенизация и т. Д.

...