Поиск Lucene получает странные фасетные результаты для текстового поля - PullRequest
0 голосов
/ 08 мая 2020

Я использую Sitecore с Lucene и пытаюсь выполнить фасет целочисленного поля, чтобы получить все существующие значения для этого поля. У меня есть следующий класс результатов поиска с определением для поля:

public class ContentTypeSearchResultItem : Sitecore.ContentSearch.SearchTypes.SearchResultItem
{
    [Sitecore.ContentSearch.IndexField("crop_heat_units")]
    public int CropHeatUnits { get; set; }
}

в моем запросе у меня есть

query = query.FacetOn.FacetOn(x => x.CropHeatUnits)

У меня есть ряд других аспектов типа ID или IEnumerable<Guid>, и они работают так, как я ожидал, но аспект строки crop_heat_units дает мне странные результаты, например chufacet.Values[0].Name = \u0001\0\0\0\0\0\0\0\u000e\b. Некоторые из других значений: @\b\0\0\0\0 и 8\u0010\0\0\0\0\0.

В Sitecore значения поля Crop Heat Units - это такие как «2075» и «2200».

1 Ответ

0 голосов
/ 16 мая 2020

Каждое числовое значение c индексируется как структура tr ie в Lucene, где каждый термин логически назначается все большим и большим предопределенным скобкам, которые просто представляют собой значения с более низкой точностью.

Итак, простое решение - изменить int на string для определения вашего поля CropHeatUnits и удалить его из карты полей. Тогда ваши запросы и фасеты должны работать должным образом. Если вы хотите использовать значения CropHeatUnits как целые числа, вам нужно будет преобразовать их значения string в integer после их извлечения из Lucene.

...