Solr Facet Alpha Числовая сортировка с дробями и десятичными знаками - PullRequest
0 голосов
/ 09 января 2019

У меня есть записи в solr с полем, в котором числовые значения сопровождаются словом. Числовые значения включают десятичные дроби и дроби. Например, значения этого поля могут быть

  • 1 1/2 дюйма
  • 11 дюймов
  • 2 дюйма
  • 3/4 ​​дюйма
  • 0,7 дюйма
  • 0,8 дюйма

Используя сортировку по индексу в solr, я получу следующий порядок:

  • 0,7 дюйма
  • 0,8 дюйма
  • 1 1/2 дюйма
  • 11 дюймов
  • 2 дюйма
  • 3/4 ​​дюйма

Если я использую решение для создания буквенно-цифрового поля из https://www.andornot.com/blog/post/Make-numbers-behave-when-sorting-alphanumerically-in-Solr.aspx Я получаю следующий заказ:

  • 0,7 дюйма
  • 0,8 дюйма
  • 1 1/2 дюйма
  • 2 дюйма
  • 3/4 ​​дюйма
  • 11 дюймов

Улучшение в том, что Solr Facet распознает, что 11 больше 2. Однако мне нужен следующий порядок:

  • 0,7 дюйма
  • 3/4 ​​дюйма
  • 0,8 дюйма
  • 1 1/2 дюйма
  • 2 дюйма
  • 11 дюймов

Как получить solr для сортировки значений фасетов с помощью десятичных и дробных буквенно-цифровых символов?

1 Ответ

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

Простой ответ: нет. Solr не знает, что 3/4 == 0,75.

Но это Solr, так что может быть индивидуальное решение для этого, и это зависит от количества фракций, которые у вас есть.

  1. Если у вас есть только фиксированный набор фракций, например, стандартные размеры сантехники или гаечный ключ, вы можете использовать SynonymGraphFilter и определять стандартные фракции, которые должны быть заменены их соответствующими числами, например, 3/4 => 0.75. Это обеспечивает сортируемость, а также добавляет гибкости тому, что может содержать поисковый запрос (то есть оба формата).
  2. Когда синонимы бесполезны, вы, конечно, можете пройти всю дистанцию ​​и написать свой собственный фильтр Solr . На самом деле это не так сложно, и в нем вы можете просто разбить входную строку, позволить Java разобрать дробь в число с плавающей запятой и записать это в поток токенов. Получает те же преимущества, что и решение 1.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...