Author: ahorincar
Date: Thu Aug 7 19:00:56 2014
New Revision: 1616567
URL: http://svn.apache.org/r1616567
Log:
Fixed pagination, fixed wildcard searching, implemented ITemplateStreamFilter
for more_like_this queries, added feature to generate schema
Added:
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/admin.py
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/backend.py
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/schema.py
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/web_ui.py
Removed:
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/solr_backend.py
Modified:
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/schemadoc/schema.xml
bloodhound/branches/bep_0014_solr/bloodhound_solr/setup.py
Added: bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/admin.py
URL:
http://svn.apache.org/viewvc/bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/admin.py?rev=1616567view=auto
==
--- bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/admin.py (added)
+++ bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/admin.py Thu Aug
7 19:00:56 2014
@@ -0,0 +1,15 @@
+from trac.core import Component, implements
+from bhsolr.schema import SolrSchema
+from trac.admin import IAdminCommandProvider
+
+class BloodhoundSolrAdmin(Component):
+
+implements(IAdminCommandProvider)
+
+# IAdminCommandProvider methods
+def get_admin_commands(self):
+yield ('bhsolr generate_schema', 'path',
+ 'Generate Solr schema',
+ None, SolrSchema(self.env).generate_schema)
+
+
Added: bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/backend.py
URL:
http://svn.apache.org/viewvc/bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/backend.py?rev=1616567view=auto
==
--- bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/backend.py (added)
+++ bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/backend.py Thu Aug
7 19:00:56 2014
@@ -0,0 +1,229 @@
+from bhsearch import BHSEARCH_CONFIG_SECTION
+from bhsearch.api import ISearchBackend, SCORE, QueryResult
+from bhsearch.query_parser import DefaultQueryParser
+from bhsearch.search_resources.ticket_search import TicketIndexer
+from trac.core import Component, implements, TracError
+from trac.config import Option
+from trac.ticket.model import Ticket
+from trac.ticket.api import TicketSystem
+from trac.util.datefmt import utc
+from datetime import datetime
+from sunburnt import SolrInterface
+from contextlib import contextmanager
+from math import ceil
+import re
+import pkg_resources
+from bhsolr.schema import SolrSchema
+
+UNIQUE_ID = unique_id
+
+HIGHLIGHTABLE_FIELDS = {unique_id : True,
+id : True,
+type : True,
+product : True,
+milestone : True,
+author : True,
+component : True,
+status : True,
+resolution : True,
+keywords : True,
+summary : True,
+content : True,
+changes : True,
+owner : True,
+repository : True,
+revision : True,
+message : True,
+name : True}
+
+class SolrBackend(Component):
+ implements(ISearchBackend)
+
+ server_url = Option(
+ BHSEARCH_CONFIG_SECTION,
+ 'solr_server_url',
+ doc=Url of the server running Solr instance.,
+ doc_domain='bhsearch')
+
+
+ def __init__(self):
+resource_filename = pkg_resources.resource_filename
+path = resource_filename(__name__, schemadoc)
+file_obj = open(path + /schema.xml)
+# print SolrSchema(self.env).getInstance(self.env).path
+# file_obj = open(SolrSchema.getInstance(self.env).path)
+self.solr_interface = SolrInterface(str(self.server_url),
schemadoc=file_obj)
+
+ def add_doc(self, doc, operation_context=None):
+self._reformat_doc(doc)
+doc[UNIQUE_ID] = self._create_unique_id(doc.get(product, ''),
+doc[type],
+doc[id])
+self.solr_interface.add(doc)
+self.solr_interface.commit()
+
+
+ def delete_doc(product, doc_type, doc_id, operation_context=None):
+unique_id = self._create_unique_id(product, doc_type, doc_id)
+self.solr_interface.delete(unique_id)
+
+
+ def optimize(self):
+self.solr_interface.optimize()
+
+ def query(self, query, query_string, sort = None, fields = None, filter =
None,
+facets = None, pagenum = 1, pagelen = 20, highlight = False,
+highlight_fields = None, context = None):
+
+if not query_string:
+