<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>Liferay Search Portlet</title>
  <link rel="self" href="https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=113277985" />
  <subtitle>Liferay Search Portlet</subtitle>
  <id>https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=113277985</id>
  <updated>2026-04-03T21:49:02Z</updated>
  <dc:date>2026-04-03T21:49:02Z</dc:date>
  <entry>
    <title>RE: Liferay Search Portlet</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=117212146" />
    <author>
      <name>David Ilechukwu</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=117212146</id>
    <updated>2019-09-19T06:10:29Z</updated>
    <published>2019-09-19T06:10:29Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Great progress Pavan,You need to&amp;nbsp; have your search filter and order parameters defined in a -DisplayTerms and -SearchTerms file, and then reference them in a -Search file, which you then reference from your searchcontainer. &lt;br&gt;&lt;br&gt;Example [com.liferay.portlet.usersadmin.search.UserSearchTerms]&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;public class UserSearchTerms extends UserDisplayTerms {&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;public UserSearchTerms(PortletRequest portletRequest) {
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;super(portletRequest);&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;emailAddress = DAOParamUtil.getString(portletRequest, EMAIL_ADDRESS);
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;firstName = DAOParamUtil.getString(portletRequest, FIRST_NAME);
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;lastName = DAOParamUtil.getString(portletRequest, LAST_NAME);
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;middleName = DAOParamUtil.getString(portletRequest, MIDDLE_NAME);
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;organizationId = ParamUtil.getLong(portletRequest, ORGANIZATION_ID);
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;roleId = ParamUtil.getLong(portletRequest, ROLE_ID);
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;screenName = DAOParamUtil.getString(portletRequest, SCREEN_NAME);
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;status = ParamUtil.getInteger(
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;portletRequest, STATUS, WorkflowConstants.STATUS_APPROVED);
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;userGroupId = ParamUtil.getLong(portletRequest, USER_GROUP_ID);
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;span style="font-size: 16px;"&gt;This defines LAST_NAME, FIRST_NAME, etc as search terms or filters. You simply replace them with your own filters.&lt;/span&gt;&lt;br&gt;Also, which interface are you using for your search display on jsp. If you are using clay:navigation styles (instead of liferay-ui), then you need to display some additional search-related items in a display context file. &lt;br&gt;&lt;br&gt;Eg.[com.liferay.users.admin.web.internal.display.context.ViewUsersManagementToolbarDisplayContext]&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;public PortletURL getPortletURL() {
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;try {
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;PortletURL portletURL = PortletURLUtil.clone(
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;_currentURL, _renderResponse);&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;portletURL.setParameter("orderByCol", getOrderByCol());
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;portletURL.setParameter("orderByType", getOrderByType());&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;return portletURL;
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;catch (Exception e) {
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;if (_log.isWarnEnabled()) {
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;_log.warn(e, e);
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;return _renderResponse.createRenderURL();
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;public String getSearchActionURL() {
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;PortletURL searchActionURL = getPortletURL();&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;return searchActionURL.toString();
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;&lt;span style="font-size: 16px;"&gt;I suggest you take a good look at these comprehensive examples in liferay source code. Should get you moving. Please let us know if you're stuck anywhere.&lt;/span&gt;&lt;br&gt;David&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>David Ilechukwu</dc:creator>
    <dc:date>2019-09-19T06:10:29Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay Search Portlet</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=117205433" />
    <author>
      <name>Christoph Rabel</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=117205433</id>
    <updated>2019-09-18T16:48:39Z</updated>
    <published>2019-09-18T16:48:39Z</published>
    <summary type="html">Are you sure that you need to use search? If I recall correctly, searchcontainer has &amp;#34;nothing&amp;#34; to do with search and the data can also come from the database.&lt;br /&gt;If you want to go with search, then:&lt;br /&gt;In 7.0 you had to create an indexer&lt;br /&gt;&lt;a href="https://portal.liferay.dev/docs/7-0/tutorials/-/knowledge_base/t/creating-an-entry-indexer"&gt;https://portal.liferay.dev/docs/7-0/tutorials/-/knowledge_base/t/creating-an-entry-indexer&lt;/a&gt;&lt;br /&gt;This has changed somewhat in 7.1, but I am not sure how much has changed. I didn&amp;#39;t need it so far. But the 7.0 way should work too.&lt;br /&gt;&lt;a href="https://portal.liferay.dev/docs/7-1/tutorials/-/knowledge_base/t/indexing-framework"&gt;https://portal.liferay.dev/docs/7-1/tutorials/-/knowledge_base/t/indexing-framework&lt;/a&gt;&lt;br /&gt;When you have done that, regular search should be able to find your items. Then you can go on and implement your own search.</summary>
    <dc:creator>Christoph Rabel</dc:creator>
    <dc:date>2019-09-18T16:48:39Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay Search Portlet</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=117202212" />
    <author>
      <name>Pavan Kumar Nagaraj</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=117202212</id>
    <updated>2019-09-18T13:55:42Z</updated>
    <published>2019-09-18T13:55:42Z</published>
    <summary type="html">Hi Christoph / Andrew,&lt;br /&gt;Thank you for the suggestions.&lt;br /&gt;I was able to create the table structure using the Liferay service builder. Also able to display the table using Searchcontainer along with standard CRUD entry options inside the portlet. &lt;br /&gt;&lt;br /&gt;Now coming to the search filter, i did some research but couldn&amp;#39;t understand completely on the Liferay searchContext and indexing . Do you have any sample code snippet which can help me in implementing this ? &lt;br /&gt;&lt;br /&gt;Thanks in advance.&lt;br /&gt;Pavan</summary>
    <dc:creator>Pavan Kumar Nagaraj</dc:creator>
    <dc:date>2019-09-18T13:55:42Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay Search Portlet</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113427208" />
    <author>
      <name>Andrew Jardine</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113427208</id>
    <updated>2019-04-26T23:33:04Z</updated>
    <published>2019-04-26T23:33:04Z</published>
    <summary type="html">Hi Pavan,&lt;br /&gt;&lt;br /&gt;Christoph beat me to it I guess &lt;img alt="emoticon" src="@theme_images_path@/emoticons/happy.gif" &gt;. His advice is sound -- it sounds like service builder is all you need. There are definitely multiple ways to solve this one, but as he said, being new to Liferay, it&amp;#39;s probably your simplest (and best documented) approach. &lt;br /&gt;&lt;br /&gt;When you manage to get that going though, if you are interested in learning how to do it with search, come back and we can walk you through the next steps. </summary>
    <dc:creator>Andrew Jardine</dc:creator>
    <dc:date>2019-04-26T23:33:04Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay Search Portlet</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113420418" />
    <author>
      <name>Christoph Rabel</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113420418</id>
    <updated>2019-04-26T14:00:14Z</updated>
    <published>2019-04-26T14:00:14Z</published>
    <summary type="html">First, you create the table(s) and fields with Service Builder. There you will store the data.&lt;br /&gt;https://dev.liferay.com/de/develop/tutorials/-/knowledge_base/7-0/what-is-service-builder&lt;br /&gt;&lt;br /&gt;It creates the usual create/read/update/delete methods for you.&lt;br /&gt;&lt;br /&gt;From there, you have two options:&lt;br /&gt;a) Search in the database&lt;br /&gt;b) Add the data to the search index&lt;br /&gt;&lt;br /&gt;Method a) is usually less work, especially if you are new to Liferay. Also, if you need to simply filter on a few fields, service builder can generate finder methods too. I think, this is also the better approach in your case, since you probably have just one table with a few lines.&lt;br /&gt;&lt;br /&gt;Method b) can be better if you have different kinds of data. e.g. Webcontent, images, forum entries, products. ... and you want to query all of them.</summary>
    <dc:creator>Christoph Rabel</dc:creator>
    <dc:date>2019-04-26T14:00:14Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay Search Portlet</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113411572" />
    <author>
      <name>Pavan Kumar Nagaraj</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113411572</id>
    <updated>2019-04-25T22:44:06Z</updated>
    <published>2019-04-25T22:44:06Z</published>
    <summary type="html">Hi Andrew,&lt;br /&gt;&lt;br /&gt;Thanks for your response. &lt;img alt="emoticon" src="@theme_images_path@/emoticons/happy.gif" &gt;&lt;br /&gt;&lt;br /&gt;I can explain in detail my requirement. Currently we have around 10K+ rows of data in excel and end users does search the required content by applying filter. &lt;br /&gt;But now we are planning to transfer this complete data into Liferay DB and put a search portlet to do this job for end user. So basically we dont have to search for any asset but i hope just one table in Liferay does this job and is it possible to achieve this by running queries against the search index rather than the database.&lt;br /&gt;&lt;br /&gt;So could you provide your suggestions. Thank you in adavance. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;Pavan</summary>
    <dc:creator>Pavan Kumar Nagaraj</dc:creator>
    <dc:date>2019-04-25T22:44:06Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay Search Portlet</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113289414" />
    <author>
      <name>Andrew Jardine</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113289414</id>
    <updated>2019-04-19T00:48:31Z</updated>
    <published>2019-04-19T00:48:31Z</published>
    <summary type="html">Hi Pavan,&lt;br /&gt;&lt;br /&gt;Welcome to the community &lt;img alt="emoticon" src="@theme_images_path@/emoticons/happy.gif" &gt;&lt;br /&gt;&lt;blockquote&gt;I am new to Liferay and have a requirement to develop to Search Portlet in Liferay 7.1&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;For the record, there are actually two different search portlets that come out of the box with Liferay and they&amp;#39;re pretty configurable, so I would consider checking those out before rolling your own search portlet. Check this resource out: https://dev.liferay.com/en/discover/portal/-/knowledge_base/7-1/whats-new-with-search&lt;br /&gt;&lt;br /&gt;If you HAVE to build your own portlet, ...&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;a href="https://dev.liferay.com/en/discover/portal/-/knowledge_base/7-1/whats-new-with-search"&gt;&lt;/a&gt;does simple search from Liferay database based on the selected dropdown options as inputs and displys the result&lt;a href="https://dev.liferay.com/en/discover/portal/-/knowledge_base/7-1/whats-new-with-search"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;I wouldn&amp;#39;t recommend building a search portlet that uses database queries. Liferay 7.1 uses Elasticsearch out of the box and has an rich (wrapper) Search API that can be used to to run queries against the search index rather than the database. Your application is already pushing enough load at the database for things that can&amp;#39;t be sourced from search, so anything you can offload onto search you probably should.&lt;br /&gt;&lt;br /&gt;For your search, are you searching across multiple entity types? (web content, documents, users, etc) or is your requirement just to provide search functionality for a single type of asset?</summary>
    <dc:creator>Andrew Jardine</dc:creator>
    <dc:date>2019-04-19T00:48:31Z</dc:date>
  </entry>
  <entry>
    <title>Liferay Search Portlet</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113277984" />
    <author>
      <name>Pavan Kumar Nagaraj</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113277984</id>
    <updated>2019-04-17T22:23:29Z</updated>
    <published>2019-04-17T22:23:29Z</published>
    <summary type="html">Hello,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I am new to Liferay and have a requirement to develop a Search Portlet in Liferay 7.1, which does simple search from Liferay database based on the selected dropdown options as inputs and displys the result. Anybody could you help me with this in developing such portlet. &lt;br /&gt;&lt;br /&gt;Thanks in Advance.&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;Pavan</summary>
    <dc:creator>Pavan Kumar Nagaraj</dc:creator>
    <dc:date>2019-04-17T22:23:29Z</dc:date>
  </entry>
</feed>
