You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2017/04/08 08:26:19 UTC
svn commit: r1790664 -
/ofbiz/ofbiz-plugins/trunk/lucene/groovyScripts/content/Search.groovy
Author: jleroux
Date: Sat Apr 8 08:26:19 2017
New Revision: 1790664
URL: http://svn.apache.org/viewvc?rev=1790664&view=rev
Log:
Fixed: CMS shows error screen on clicking Find button
(OFBIZ-9301)
Steps to regenerate :
1. Log in to Content component
2. Go to the CMS tab or directly go to
https://localhost:8443/content/control/CMSContentFind
3. Click on "Find" submenu or directly go to
https://localhost:8443/content/control/AdminSearch
4. Screen renders with ScreenRenderingException
Problem:
1. "AdminSearch" request directs to "AdminSearch" screen in LuceneScreens.xml.
2. On AdminSearch screen, "Search.groovy" script prepares and hits a search
query to Lucene.
3. "BooleanQuery" class is used to match documents with other boolean query
combinations.
4. BooleanQuery object is initialised with Its default constructor.
5. With Lucene 5.4.0, this constructor is deprecated.
OFBiz migrated to Lucene 6.3.1: OFBIZ-8316
Solution:
From Lucene 5.4.0 default constructor is deprecated and a new inner class
Builder is created for queries.
jleroux: I sorted the imports by hand, and added missing parenthesis at .build
Thanks: Aditya
Modified:
ofbiz/ofbiz-plugins/trunk/lucene/groovyScripts/content/Search.groovy
Modified: ofbiz/ofbiz-plugins/trunk/lucene/groovyScripts/content/Search.groovy
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-plugins/trunk/lucene/groovyScripts/content/Search.groovy?rev=1790664&r1=1790663&r2=1790664&view=diff
==============================================================================
--- ofbiz/ofbiz-plugins/trunk/lucene/groovyScripts/content/Search.groovy (original)
+++ ofbiz/ofbiz-plugins/trunk/lucene/groovyScripts/content/Search.groovy Sat Apr 8 08:26:19 2017
@@ -22,13 +22,15 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.index.Term
import org.apache.lucene.queryparser.classic.QueryParser
import org.apache.lucene.store.FSDirectory
+import org.apache.lucene.search.*
+import org.apache.lucene.index.DirectoryReader
+
import org.apache.ofbiz.base.util.UtilHttp
import org.apache.ofbiz.content.search.SearchWorker
import org.apache.ofbiz.product.feature.ParametricSearch
-import org.apache.lucene.search.*
-import org.apache.lucene.index.DirectoryReader
import org.apache.ofbiz.base.util.UtilProperties
+
queryLine = parameters.queryLine
siteId = parameters.lcSiteId
@@ -39,7 +41,7 @@ searchFeature3 = (String) parameters.SEA
featureIdByType = ParametricSearch.makeFeatureIdByTypeMap(UtilHttp.getParameterMap(request))
-combQuery = new BooleanQuery()
+combQuery = new BooleanQuery.Builder()
try {
DirectoryReader reader = DirectoryReader.open(FSDirectory.open(new File(SearchWorker.getIndexPath("content")).toPath()))
@@ -64,7 +66,7 @@ if (queryLine || siteId) {
}
if (searchFeature1 || searchFeature2 || searchFeature3 || !featureIdByType.isEmpty()) {
- featureQuery = new BooleanQuery()
+ featureQuery = new BooleanQuery.Builder()
featuresRequired = BooleanClause.Occur.MUST
if ("any".equals(parameters.any_or_all)) {
featuresRequired = BooleanClause.Occur.SHOULD
@@ -90,12 +92,12 @@ if (searchFeature1 || searchFeature2 ||
termQuery = new TermQuery(new Term("feature", value))
featureQuery.add(termQuery, featuresRequired)
}
- combQuery.add(featureQuery, featuresRequired)
+ combQuery.add(featureQuery.build(), featuresRequired)
}
}
if (searcher) {
TopScoreDocCollector collector = TopScoreDocCollector.create(100) //defaulting to 100 results
- searcher.search(combQuery, collector)
+ searcher.search(combQuery.build(), collector)
ScoreDoc[] hits = collector.topDocs().scoreDocs
contentList = [] as ArrayList