XPages сортировка вида после нечеткого поиска - PullRequest
0 голосов
/ 04 января 2019

У меня есть представление в моем XPage, у которого есть свойство "search", связанное с переменной viewScope. Теперь по запросу нашего клиента я включил опцию «нечеткого поиска» «true», так как они хотели, чтобы представление показывало похожие результаты поиска (они не могли найти то, что искали, если поисковый запрос не совпадал точно, чтобы быть конкретным ).

Это создало еще одну проблему, которая заключается в том, что если представление имеет идеальное совпадение или даже содержит переменную поиска, она не указана вверху, а указана далеко под представлением.

В качестве примера, представление имеет коды продуктов, варьирующиеся от "EGSK" до "EGSY" (список содержит EGSS, EGSC, EGST и т. Д.). Теперь, если они ищут «EGSC», оно включено в представление, но не в верхней части. Поскольку другие коды продуктов отличаются в основном на 1 символ, все они включены в результаты.

Как можно изменить это так, чтобы, если переменная видимости идеально совпадала, она отображалась вверху при ее поиске при включенном нечетком поиске?

1 Ответ

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

Функциональность поиска не позволяет сортировать по точности совпадения. Вот что я бы сделал: - отделить ваш интерфейс от просмотра. Например. используйте управляемый компонент и повтор для построения пользовательского интерфейса и метода в компоненте, который дает вам коллекцию пользовательского объекта для строк - встроить метод в bean-компонент, который запрашивает представление любым удобным для вас способом. Циклически просматривайте записи и создавайте коллекцию пользовательских объектов. - сортируйте их, прежде чем вернуть.

Хитрость здесь в том, чтобы использовать Collections.sort, который позволяет указать собственный механизм сортировки . Вы можете вычислить процент соответствия поискового термина и отсортировать сначала для этого, затем по строке - все в одной функции.

Предупреждение: если ваш поиск возвращает много значений, у вас может не хватить времени и / или памяти.

Надеюсь, что поможет

...