2013-05-22 2 views
0

У меня есть сложная поисковая конфигурация для класса домена и связанных с ним классов домена. когда я ищу около 200 результатов (макс .: 200), требуется слишком много времени для ответа.Проецирование Grails Результат поиска для плагинов для поиска

в результирующем наборе У меня есть все поля (простые или ассоциативные), указанные для поиска в моем классе домена. Мне нужно вернуть только список идентификаторов и игнорировать другие поля класса домена. Является ли это возможным? Я хочу сделать это для ускорения моего поиска. этот список идентификаторов будет использоваться для запроса другого no-sql db. кажется, что выборка всех полей замедляет мой поиск.

+0

Если я правильно помню, результаты, на которые возвращаются данные поиска, являются прокси-серверами, что означает, что если вы не пытаетесь получить доступ к другим свойствам, кроме идентификатора, он не должен загружать их из базы данных. Вы пытались активировать регистрацию sql, чтобы просмотреть запросы, отправленные в БД, чтобы узнать, слишком ли много запросов? – Eylen

+0

Нет, он не запрашивает DB при поиске результатов поиска. когда я устанавливаю max: 10, он находит количество результатов и возвращает 10 элементов, и когда я устанавливаю max: 1000, требуется 100 раз больше времени для ответа. –

+1

Извините, я неправильно понял вопрос. Не зная своих классов домена, сложно дать четкое решение, но если вас не интересуют некоторые поля и вы не хотите их индексировать, вы можете просто исключить их из индекса или если вы хотите их восстановить, но не поиск по ним, вы можете индексировать, но не анализировать их. – Eylen

ответ

1

Я думаю, что вы можете добиться того, что вы хотите (пусть свойство доступно для поиска, но не вернуть его), установив свойство магазин в нет.

Например:

class MyDomain { 
    String name 
    String email 

    static searchable = { 
     email index:'analyzed', store:'no' 
     name index:'analyzed' 
    } 
} 

В этой области я говорю, что имя и адрес электронной почты индексируются и анализируется (так что они могут быть найдены), но свойство электронной почты не хранится, поэтому он будет нулевым, когда объект возвращается. Для других свойств проверьте: http://grails.org/Searchable+Plugin+-+Mapping+-+Searchable+Property