Foren

Making custom portlet searchable in Liferay default search portlet

thumbnail
Atin Agarwal, geändert vor 11 Jahren.

Making custom portlet searchable in Liferay default search portlet

Junior Member Beiträge: 86 Beitrittsdatum: 20.02.12 Neueste Beiträge
Hi,
To search the contents of my custom portlet from the Liferay's default search portlet I have followed the following steps but it doesn't showing up the results -

1. Created Indexes while adding my entity in DB -

public Sample addSample(Sample sample) {
---------------code to add entity----------------
Indexer indexer = IndexerRegistryUtil.getIndexer(Sample.class);
indexer.reindex(sample);
}

Also i did the same thing while updating my entity.

2.Created my Indexer Class -

public class SampleIndexer extends BaseIndexer {

public static final String[] CLASS_NAMES = { Sample.class.getName() };

public static final String PORTLET_ID = "sample -portlet";

public String[] getClassNames() {

return CLASS_NAMES;
}

@Override
protected void doDelete(Object obj) throws Exception {

Sample sample = (Sample) obj;
Document document = new DocumentImpl();

document.addUID(PORTLET_ID, sample.getPrimaryKey());

String searchEngineId = SearchEngineUtil.getDefaultSearchEngineId();
SearchEngineUtil.deleteDocument(searchEngineId, sample.getCompanyId(),
document.get(Field.UID));
}

@Override
protected Document doGetDocument(Object obj) throws Exception {

Sample sample= (Sample) obj;
long groupId = getParentGroupId(sample.getGroupId());
long scopeGroupId = sample.getGroupId();
String description = sample.getSampleDescription();

Document document = getBaseModelDocument(PORTLET_ID, sample);

document.addKeyword(Field.GROUP_ID, groupId);
document.addKeyword(Field.SCOPE_GROUP_ID, scopeGroupId);
document.addText(Field.DESCRIPTION, description);

return document;
}

@Override
public void postProcessSearchQuery(BooleanQuery searchQuery,
SearchContext searchContext) throws Exception {

addSearchTerm(searchQuery, searchContext, Field.DESCRIPTION, false);

}

@Override
protected void doReindex(Object obj) throws Exception {

Sample sample= (Sample) obj;
String searchEngineId = SearchEngineUtil.getDefaultSearchEngineId();
SearchEngineUtil.updateDocument(searchEngineId, sample.getCompanyId(),
getDocument(sample));
}

@Override
protected void doReindex(String className, long classPK) throws Exception {

Sample sample= SampleLocalServiceUtil.getSample(classPK);

doReindex(sample);
}

@Override
protected void doReindex(String[] ids) throws Exception {

long companyId = GetterUtil.getLong(ids[0]);

doReindexAll(companyId);
}

private void doReindexAll(long companyId) throws Exception {

int count = SampleLocalServiceUtil.getSamplesCount();

int pages = count / Indexer.DEFAULT_INTERVAL;

for (int i = 0; i <= pages; i++) {
int start = (i * Indexer.DEFAULT_INTERVAL);
int end = start + Indexer.DEFAULT_INTERVAL;

reindexSamples(companyId, start, end);
}
}

protected void reindexSamples(long companyId, int start, int end)
throws Exception {

List< Sample> samples= SampleLocalServiceUtil.getSamples(start,
end);

if ( samples.isEmpty()) {
return;
}

Collection<Document> documents = new ArrayList<Document>();

for ( Sample sample: Samples) {
Document document = getDocument( sample);
documents.add(document);
}

String searchEngineId = SearchEngineUtil.getDefaultSearchEngineId();
SearchEngineUtil.updateDocuments(searchEngineId, companyId, documents);
}

@Override
protected String getPortletId(SearchContext searchContext) {

return PORTLET_ID;
}

public Summary doGetSummary(Document document, Locale locale,
String snippet, PortletURL portletURL) {

String title = document.get(Field.TITLE);

String content = snippet;

if (Validator.isNull(snippet)) {
content = document.get(Field.DESCRIPTION);

if (Validator.isNull(content)) {
content = StringUtil.shorten(document.get(Field.CONTENT), 200);
}
}

String id = document.get(Field.ENTRY_CLASS_PK);

portletURL.setParameter("struts_action", "/search/search");
portletURL.setParameter("id", id);

return new Summary(title, content, portletURL);
}

@Override
public String getPortletId() {
return PORTLET_ID;
}
}


3. Made an entry of my indexer in liferay-portlet.xml -
<indexer-class>com.my.search.SampleIndexer</indexer-class>

4. Created my OpenSearchImpl class -
public class SampleOpenSearchImpl extends HitsOpenSearchImpl {

public static final String SEARCH_PATH = "/search/search";

public static final String TITLE = "Sample Search: ";

@Override
public Indexer getIndexer() {
return IndexerRegistryUtil.getIndexer(Sample.class);
}

@Override
public String getPortletId() {
return SampleIndexer.PORTLET_ID;
}

@Override
public String getSearchPath() {
return SEARCH_PATH;
}

@Override
public String getTitle(String keywords) {
return TITLE + keywords;
}
}

5. Made an entry of my open search class in liferay-portlet.xml -
<open-search-class>com.my.search.SampleOpenSearchImpl</open-search-class>

-----------------------------------------------------------------------------------------------------------------------------------
This is all i did , but got no results in search portlet.

Kindly, suggest if i am missing anything or doing something wrong.
Any help would be appreciated.


Thanks in advance,
Atin Agarwal
thumbnail
Hitoshi Ozawa, geändert vor 11 Jahren.

RE: Making custom portlet searchable in Liferay default search portlet

Liferay Legend Beiträge: 7942 Beitrittsdatum: 24.03.10 Neueste Beiträge
I have tried the steps mentioned in the following thread?

http://www.liferay.com/community/forums/-/message_boards/message/1839079
thumbnail
Atin Agarwal, geändert vor 10 Jahren.

RE: Making custom portlet searchable in Liferay default search portlet (Antwort)

Junior Member Beiträge: 86 Beitrittsdatum: 20.02.12 Neueste Beiträge
Though its a bit late but found the solution, I missed out to add companyId in the document.

After adding it-
document.addKeyword(Field.COMPANY_ID, companyId);

It worked.

Regards,
Atin Agarwal
Muhammad Taha, geändert vor 10 Jahren.

RE: Making custom portlet searchable in Liferay default search portlet

Junior Member Beiträge: 63 Beitrittsdatum: 01.05.12 Neueste Beiträge
Thanks Atin.
Pavel Fomin, geändert vor 9 Jahren.

RE: Making custom portlet searchable in Liferay default search portlet

New Member Beiträge: 2 Beitrittsdatum: 26.11.14 Neueste Beiträge
Good example - thank you for sharing.
One other step not mentioned above was adding the Sample model class into the advanced configuration JSON of the search portlet: Configure -> Advanced -> Search Configuration. Specifically adding com.example.model.Sample to the data.values array.
Prateeksha Mandloi, geändert vor 9 Jahren.

RE: Making custom portlet searchable in Liferay default search portlet

Regular Member Beiträge: 112 Beitrittsdatum: 05.02.14 Neueste Beiträge
Hello Atin,

I followed the steps mentioned by you. But after the doGetDocument() method returns document object. It throws below error :
java.lang.NullPointerException
2 at com.liferay.portal.search.SearchPermissionCheckerImpl.addPermissionFields(SearchPermissionCheckerImpl.java:107)
3 at com.liferay.portal.kernel.search.SearchEngineUtil.updateDocument(SearchEngineUtil.java:726)
4 at com.tmf.news.MySampleIndexerClass.doReindex(MySampleIndexerClass.java:121)
5 at com.liferay.portal.kernel.search.BaseIndexer.reindex(BaseIndexer.java:418)
6 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
7 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
8 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
9 at java.lang.reflect.Method.invoke(Unknown Source)
10 at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:67)
11 at com.sun.proxy.$Proxy659.reindex(Unknown Source)
12 at com.tmf.news.service.impl.NewsLocalServiceImpl.addNewsEntry(NewsLocalServiceImpl.java:92)
13 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
14 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
15 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
16 at java.lang.reflect.Method.invoke(Unknown Source)
17 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:115)
18 at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:62)
19 at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:51)
20 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
21 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
22 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
23 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
24 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
25 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
26 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
27 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
28 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
29 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
30 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
31 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
32 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
33 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
34 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
35 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
36 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
37 at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56)
38 at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111)
39 at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:175)
40 at com.sun.proxy.$Proxy652.addNewsEntry(Unknown Source)
41 at com.tmf.news.service.NewsLocalServiceUtil.addNewsEntry(NewsLocalServiceUtil.java:277)
42 at com.tmf.news.NewsFollowPortlet.updateNewsEntry(NewsFollowPortlet.java:149)
43 at com.tmf.news.NewsFollowPortlet.processAction(NewsFollowPortlet.java:85)
44 at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:71)
45 at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:48)
46 at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:112)
47 at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
48 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
49 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
50 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
51 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:96)
52 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
53 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
54 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
55 at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:605)
56 at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:544)
57 at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:604)
58 at com.liferay.portlet.InvokerPortletImpl.invokeAction(InvokerPortletImpl.java:649)
59 at com.liferay.portlet.InvokerPortletImpl.processAction(InvokerPortletImpl.java:312)
60 at com.liferay.portlet.PortletContainerImpl._doProcessAction(PortletContainerImpl.java:402)
61 at com.liferay.portlet.PortletContainerImpl.processAction(PortletContainerImpl.java:110)
62 at com.liferay.portlet.SecurityPortletContainerWrapper.processAction(SecurityPortletContainerWrapper.java:109)
63 at com.liferay.portlet.RestrictPortletContainerWrapper.processAction(RestrictPortletContainerWrapper.java:75)
64 at com.liferay.portal.kernel.portlet.PortletContainerUtil.processAction(PortletContainerUtil.java:115)
65 at com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:356)
66 at com.liferay.portal.action.LayoutAction.doExecute(LayoutAction.java:178)
67 at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:79)
68 at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
69 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
70 at com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:173)
71 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
72 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
73 at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
74 at com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:546)
75 at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:523)
76 at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
77 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
78 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
79 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
80 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
81 at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:293)
82 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
83 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
84 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
85 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
86 at com.liferay.portal.servlet.filters.jsoncontenttype.JSONContentTypeFilter.processFilter(JSONContentTypeFilter.java:42)
87 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
88 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
89 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
90 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:96)
91 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
92 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
93 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
94 at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
95 at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
96 at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
97 at com.liferay.portal.servlet.FriendlyURLServlet.service(FriendlyURLServlet.java:160)
98 at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
99 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
100 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
101 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
102 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
103 at com.liferay.portal.servlet.filters.strip.StripFilter.processFilter(StripFilter.java:359)
104 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
105 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
106 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
107 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
108 at com.liferay.portal.servlet.filters.gzip.GZipFilter.processFilter(GZipFilter.java:123)
109 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
110 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
111 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
112 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
113 at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:293)
114 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
115 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
116 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
117 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
118 at com.liferay.portal.servlet.filters.i18n.I18nFilter.processFilter(I18nFilter.java:243)
119 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
120 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
121 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
122 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
123 at com.liferay.portal.servlet.filters.jsoncontenttype.JSONContentTypeFilter.processFilter(JSONContentTypeFilter.java:42)
124 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
125 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
126 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
127 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
128 at com.liferay.portal.servlet.filters.autologin.AutoLoginFilter.processFilter(AutoLoginFilter.java:267)
129 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
130 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
131 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
132 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
133 at com.liferay.portal.servlet.filters.sso.ntlm.NtlmPostFilter.processFilter(NtlmPostFilter.java:83)
134 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
135 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
136 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
137 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
138 at com.liferay.portal.sharepoint.SharepointFilter.processFilter(SharepointFilter.java:88)
139 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
140 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
141 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
142 at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169)
143 at com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.processFilter(VirtualHostFilter.java:226)
144 at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59)
145 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
146 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
147 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:185)
148 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)
149 at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
150 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
151 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
152 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:165)
153 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)
154 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:165)
155 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)
156 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:185)
157 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)
158 at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:96)
159 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
160 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
161 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
162 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
163 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
164 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
165 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
166 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
167 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
168 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
169 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
170 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
171 at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
172 at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
173 at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
174 at java.lang.Thread.run(Unknown Source)

Can you please help !!
Mohit S, geändert vor 9 Jahren.

RE: Making custom portlet searchable in Liferay default search portlet

New Member Beiträge: 20 Beitrittsdatum: 28.02.14 Neueste Beiträge
Hi,

Sounds interesting!!!
It looks like that Indexer is null , which is causing NPE.
Can you please make sure if you have register your Indexer class successfully?

It would be great if you can upload the source code here.

Cheers,