You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by wo...@apache.org on 2011/04/18 22:49:41 UTC

svn commit: r1094737 - in /portals/jetspeed-2/portal/trunk: applications/jetspeed/src/main/webapp/WEB-INF/solr/js/conf/ components/jetspeed-search/src/main/java/org/apache/jetspeed/search/solr/ components/jetspeed-search/src/test/resources/solr-test-ho...

Author: woonsan
Date: Mon Apr 18 20:49:40 2011
New Revision: 1094737

URL: http://svn.apache.org/viewvc?rev=1094737&view=rev
Log:
JS2-1246: Refining Solr based SearchEngine to use searchable fields explicitly.
Also, fixing the default http solr base url with core name for multi-core setup.

Modified:
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/solr/js/conf/schema.xml
    portals/jetspeed-2/portal/trunk/components/jetspeed-search/src/main/java/org/apache/jetspeed/search/solr/SolrSearchEngineImpl.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-search/src/test/resources/solr-test-home/js/conf/schema.xml
    portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/conf/jetspeed/jetspeed.properties

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/solr/js/conf/schema.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/solr/js/conf/schema.xml?rev=1094737&r1=1094736&r2=1094737&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/solr/js/conf/schema.xml (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/solr/js/conf/schema.xml Mon Apr 18 20:49:40 2011
@@ -425,7 +425,8 @@
      default: a value that should be used if no value is specified
        when adding a document.
    -->
-
+   
+   <!-- Core Search Fields -->
    <field name="fieldname.key" type="string" indexed="true" stored="true" required="true" />
    <field name="fieldname.type" type="text" indexed="true" stored="true" required="false" />
    <field name="fieldname.content" type="text" indexed="true" stored="false" required="false" />
@@ -438,12 +439,17 @@
    <field name="fieldname.score" type="text" indexed="true" stored="false" required="false" />
    <field name="fieldname.className" type="text" indexed="true" stored="true" required="false" />
    <field name="fieldname.synthetic" type="text" indexed="true" stored="false" required="false" />
-   
+   <!-- Metadata Search Fields -->
    <field name="ID" type="string" indexed="true" stored="true" required="false" />
    <field name="url" type="text" indexed="true" stored="true" required="false" />
    <field name="portlet" type="string" indexed="true" stored="true" required="false" />
    <field name="portlet_application" type="string" indexed="true" stored="true" required="false" />
-   
+   <field name="title" type="string" indexed="true" stored="false" multiValued="true" required="false" />
+   <field name="description" type="string" indexed="true" stored="false" multiValued="true" required="false" />
+   <field name="subject" type="string" indexed="true" stored="false" multiValued="true" required="false" />
+   <field name="creator" type="string" indexed="true" stored="false" multiValued="true" required="false" />
+   <field name="publisher" type="string" indexed="true" stored="false" multiValued="true" required="false" />
+   <field name="contributor" type="string" indexed="true" stored="false" multiValued="true" required="false" />
    
    <!-- Dynamic field definitions.  If a field name is not found, dynamicFields
         will be used if the name matches any of the patterns.
@@ -479,7 +485,9 @@
         field name or dynamic field, rather than reporting them as an error. 
         alternately, change the type="ignored" to some other type e.g. "text" if you want 
         unknown fields indexed and/or stored by default --> 
+   <!--
    <dynamicField name="*" type="ignored" multiValued="true" />
+   -->
    
  </fields>
 

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-search/src/main/java/org/apache/jetspeed/search/solr/SolrSearchEngineImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-search/src/main/java/org/apache/jetspeed/search/solr/SolrSearchEngineImpl.java?rev=1094737&r1=1094736&r2=1094737&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-search/src/main/java/org/apache/jetspeed/search/solr/SolrSearchEngineImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-search/src/main/java/org/apache/jetspeed/search/solr/SolrSearchEngineImpl.java Mon Apr 18 20:49:40 2011
@@ -19,8 +19,10 @@ package org.apache.jetspeed.search.solr;
 import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -58,6 +60,21 @@ public class SolrSearchEngineImpl implem
     private SolrServer server;
     private boolean optimizeAfterUpdate = true;
     private HandlerFactory handlerFactory;
+    private Set<String> searchableMetadataFieldNames = 
+        new HashSet<String>(Arrays.asList(
+                                          "ID", 
+                                          "url", 
+                                          "portlet", 
+                                          "portlet_application",
+                                          "subject",
+                                          "creator",
+                                          "publisher",
+                                          "title",
+                                          "fieldname.title",
+                                          "contributor",
+                                          "description",
+                                          "fieldname.description"
+                                          ));
     
     public SolrSearchEngineImpl(SolrServer server, boolean optimzeAfterUpdate, HandlerFactory handlerFactory)
     {
@@ -66,6 +83,16 @@ public class SolrSearchEngineImpl implem
         this.handlerFactory = handlerFactory;
     }
     
+    public Set<String> getSearchableMetadataFieldNames()
+    {
+        return searchableMetadataFieldNames;
+    }
+
+    public void setSearchableMetadataFieldNames(Set<String> searchableMetadataFieldNames)
+    {
+        this.searchableMetadataFieldNames = searchableMetadataFieldNames;
+    }
+
     /* (non-Javadoc)
      * @see org.apache.jetspeed.search.SearchEnging#add(java.lang.Object)
      */
@@ -463,8 +490,14 @@ public class SolrSearchEngineImpl implem
             while(keyIter.hasNext())
             {
                 Object key = keyIter.next();
+                
                 if(key != null)
                 {
+                    if (!searchableMetadataFieldNames.contains(key))
+                    {
+                        continue;
+                    }
+                    
                     Object values = fields.get(key);
                     if(values != null)
                     {

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-search/src/test/resources/solr-test-home/js/conf/schema.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-search/src/test/resources/solr-test-home/js/conf/schema.xml?rev=1094737&r1=1094736&r2=1094737&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-search/src/test/resources/solr-test-home/js/conf/schema.xml (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-search/src/test/resources/solr-test-home/js/conf/schema.xml Mon Apr 18 20:49:40 2011
@@ -425,7 +425,8 @@
      default: a value that should be used if no value is specified
        when adding a document.
    -->
-
+   
+   <!-- Core Search Fields -->
    <field name="fieldname.key" type="string" indexed="true" stored="true" required="true" />
    <field name="fieldname.type" type="text" indexed="true" stored="true" required="false" />
    <field name="fieldname.content" type="text" indexed="true" stored="false" required="false" />
@@ -438,12 +439,17 @@
    <field name="fieldname.score" type="text" indexed="true" stored="false" required="false" />
    <field name="fieldname.className" type="text" indexed="true" stored="true" required="false" />
    <field name="fieldname.synthetic" type="text" indexed="true" stored="false" required="false" />
-   
+   <!-- Metadata Search Fields -->
    <field name="ID" type="string" indexed="true" stored="true" required="false" />
    <field name="url" type="text" indexed="true" stored="true" required="false" />
    <field name="portlet" type="string" indexed="true" stored="true" required="false" />
    <field name="portlet_application" type="string" indexed="true" stored="true" required="false" />
-   
+   <field name="title" type="string" indexed="true" stored="false" multiValued="true" required="false" />
+   <field name="description" type="string" indexed="true" stored="false" multiValued="true" required="false" />
+   <field name="subject" type="string" indexed="true" stored="false" multiValued="true" required="false" />
+   <field name="creator" type="string" indexed="true" stored="false" multiValued="true" required="false" />
+   <field name="publisher" type="string" indexed="true" stored="false" multiValued="true" required="false" />
+   <field name="contributor" type="string" indexed="true" stored="false" multiValued="true" required="false" />
    
    <!-- Dynamic field definitions.  If a field name is not found, dynamicFields
         will be used if the name matches any of the patterns.
@@ -479,7 +485,9 @@
         field name or dynamic field, rather than reporting them as an error. 
         alternately, change the type="ignored" to some other type e.g. "text" if you want 
         unknown fields indexed and/or stored by default --> 
+   <!--
    <dynamicField name="*" type="ignored" multiValued="true" />
+   -->
    
  </fields>
 

Modified: portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/conf/jetspeed/jetspeed.properties
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/conf/jetspeed/jetspeed.properties?rev=1094737&r1=1094736&r2=1094737&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/conf/jetspeed/jetspeed.properties (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/conf/jetspeed/jetspeed.properties Mon Apr 18 20:49:40 2011
@@ -235,7 +235,8 @@ search.index.location=${applicationRoot}
 search.index.optimizeAfterUpdate=true
 
 # Optionally you can configure external solr http(s) url
-search.http.solr.url=http://localhost:8983/solr
+# Note: If you have multi-core setup, you should put the core name at the end. e.g., '/js'.
+search.http.solr.url=http://localhost:8983/solr/js
 
 # Optionally you can configure embedded solr home and data dir paths 
 # if you enable embedded solr instead of the default lucene



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org