2016-11-28 14 views
0

У меня есть требование, в котором мне нужно переопределить Liferay по умолчанию функции поиска таким образом, что всякий раз, когда пользователь выполняет поиск, он должен работать следующим образом:Liferay Поиск портлетов Настройка

Уже несколько третья сторона успокоительные услуги , которые возвращают результат для любых ключевых слов поиска. Скажем, что ключевой ключ поиска - «Тест», если мы передадим «Тест» третьим сторонам, он вернет результат в виде json, который нам нужно отобразить в пределах страницу результатов поиска.

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

Шаг 1: Я создам крюк проект, в котором я переназначающее main_search_result_form.jsp для форматирования страницы результата.

Шаг 2: Я создам индекс, в котором я буду реализовывать и делать вызов для обслуживания с ключевым словом поиска, я верну результирующий объект json.

Шаг 3: я буду получать в JSON main_search_result_form.jsp и я форматировать страницу на основе этого вывода JSon

Как знать, правильно ли

+0

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

+0

@MilenDyankov Я использую 'Liferay6.2GA6 Version' –

+0

@MilenDyankov Я хочу полностью заменить возможности поиска Liferay своим настраиваемым –

ответ

1

Мой совет Мой подход для создания нового портлета и не подключайте существующий портлет поиска по следующим причинам:

-Возможность портлета поиска Liferay - использование поисковой системы Apache Lucene для поиска и индексации содержимого портала, e ntities ... и поскольку вы не хотите, чтобы результаты поиска с портала бесполезны, чтобы подключить его.

-Выбор портлета jsp закодирован с определенной логикой визуализации, которая, вероятно, будет отличаться от вашей логики (особенно с результатами json), поэтому я думаю, что вам придется вносить большие изменения в эти jsp, и это будет накладные расходы.

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

Так что я думаю, что простой портлет Liferay MVC станет для вас лучшим выбором. не

Замена темы поиска по умолчанию с помощью пользовательского портлета поиска

Нет вам не нужен крюк. Вы можете заменить поле поиска темы, редактируя файл portal_normal следующим образом:

Заменить

$theme.journalContentSearch() 

По

## Set the portlet preferences if you need ## 
#set ($VOID = $velocityPortletPreferences.setValue('display-style', '1')) 
#set ($VOID = $velocityPortletPreferences.setValue('portlet-setup-show-borders', 'false')) 

#set ($instanceId = 'A2R4') 
#set ($portletId = 'YOUR_CUSTOM_SEARCH_PORTLET_ID') 
#set ($myPortlet = "${portletId}_INSTANCE_${instanceId}") 

$theme.runtime($myPortlet, '', $velocityPortletPreferences.toString()) 

#set ($VOID = $velocityPortletPreferences.reset()) 
+0

Спасибо за ответ .......... Позволяет сказать, что я создаю собственный портлет, который содержит коробку с сыром и ее реализацию, но как мы можем заменить поле поиска темы, нужно ли нам написать крючок, чтобы он был заменен нашим пользовательским портлетом в теме –

3

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

Хорошая новость - Liferay имеет подключаемый поиск. В 6.2 по умолчанию используется встроенный Lucene, но вы можете заменить его на Solr.Например, вы можете посмотреть плагин solr-web, чтобы увидеть, как это реализовано. В частности, посмотреть, как бобы соединены с конфигурацией поиска в solr-spring.xml

То есть, я думаю, у вас есть несколько вариантов для того чтобы достигнуть того, что вы хотите:

  • полностью реализовать новый поисковый плагин на основе индекса пользовательского сервиса, который может и искать каждый объект, который Liferay ожидает индексировать.
  • реализовать новый поисковый плагин, который будет каким-то образом различать «ваших» поиск и «внутренний» поиск/индекс и отправки запросов к различным местам
  • реализовать свой собственный портлет, который делает то, что вы хотите независим поиска Liferay в