Author: ahorincar
Date: Fri Jun 20 00:39:42 2014
New Revision: 1604058
URL: http://svn.apache.org/r1604058
Log:
Added methods to create Sunburnt query chains
Added:
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/admin.py
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/api.py
Removed:
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/htdocs/
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/templates/
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/web_ui.py
Modified:
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/solr_backend.py
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=1604058&view=auto
==============================================================================
--- bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/admin.py (added)
+++ bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/admin.py Fri Jun
20 00:39:42 2014
@@ -0,0 +1,16 @@
+r"""Administration commands for Bloodhound Solr Search."""
+from trac.core import Component, implements
+from trac.admin import IAdminCommandProvider
+from bhsolr.api import BloodhoundSolrApi
+
+class BloodhoundSolrSearchAdmin(Component):
+ """Bloodhound Solr Search administration component."""
+ implements(IAdminCommandProvider)
+
+ # IAdminCommandProvider methods
+ def get_admin_commands(self):
+ yield ('bhsolr populate_index', '', 'Populate Solr search index',
+ None, BloodhoundSolrApi(self.env).populate_index)
+ yield ('bhsolr optimize', '', 'Optimize Solr search index',
+ None, BloodhoundSearchApi(self.env).optimize)
+
Added: bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/api.py
URL:
http://svn.apache.org/viewvc/bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/api.py?rev=1604058&view=auto
==============================================================================
--- bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/api.py (added)
+++ bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/api.py Fri Jun 20
00:39:42 2014
@@ -0,0 +1,7 @@
+from bhsolr.search_resources import TicketSearchModel
+from trac.core import Component, implements
+
+class BloodhoundSolrApi(Component):
+ def populate_index(self):
+ tickets = TicketSearchModel(self.env).get_entries_for_index()
+ print tickets
Modified:
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/solr_backend.py
URL:
http://svn.apache.org/viewvc/bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/solr_backend.py?rev=1604058&r1=1604057&r2=1604058&view=diff
==============================================================================
--- bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/solr_backend.py
(original)
+++ bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/solr_backend.py
Fri Jun 20 00:39:42 2014
@@ -7,17 +7,19 @@ from trac.ticket.api import TicketSystem
from bhsearch.search_resources.ticket_search import TicketIndexer
from datetime import datetime
from trac.util.datefmt import utc
+from bhsearch.api import ISearchBackend
+from bhsearch.query_parser import DefaultQueryParser
UNIQUE_ID = "unique_id"
-class SolrModel(Component):
+class SolrBackend(Component):
implements(ISearchBackend)
def __init__(self):
resource_filename = pkg_resources.resource_filename
path = resource_filename(__name__, "schemadoc")
- # self.solr_interface = Solr("http://localhost:8983/solr/", path +
'/schema.xml').solr_interface
- self.solr_interface = Solr("http://localhost:8983/solr/").solr_interface
+ self.solr_interface = Solr("http://localhost:8983/solr/").solr_interface #
TODO: Refactor
+ self.field_boosts = DefaultQueryParser(self.env).field_boosts
def add_doc(self, doc, operation_context=None):
@@ -34,13 +36,44 @@ class SolrModel(Component):
self.solr_interface.delete(unique_id)
- def optimize():
+ 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):
+
+ tokens = set([token.text for token in query.all_tokens()])
+ final_query_chain = None
+ for token in tokens:
+ token_query_chain = self._search_fields_for_token(token)
+ if final_query_chain == None:
+ final_query_chain = token_query_chain
+ else:
+ final_query_chain |= token_query_chain
+
+ print final_query_chain
+ return None
- def query(self, query):
- self.solr_instance.solr_interface.query(query).execute()
+ def is_index_outdated(self):
+ return False
+ def recreate_index(self):
+ return True
+
+ def start_operation(self):
+ return None
+
+ def _search_fields_for_token(self, token):
+ query_chain = None
+ for field, boost in self.field_boosts.iteritems():
+ field_token_dict = {field: token}
+ if query_chain == None:
+ query_chain = self.solr_interface.Q(**field_token_dict)**boost
+ else:
+ query_chain |= self.solr_interface.Q(**field_token_dict)**boost
+
+ return query_chain
def _reformat_doc(self, doc):
for key, value in doc.items():
@@ -75,12 +108,7 @@ class SolrModel(Component):
else:
return u"%s:%s" % (doc_type, doc_id)
-if __name__ == '__main__':
- env =
trac.env.Environment("/Users/antonia/Documents/Code/bloodhound/installer/bloodhound/environments/main")
- db_connection = env.get_db_cnx()
- cursor = db_connection.cursor()
- a = cursor.execute("select * from ticket")
- ticket = a.fetchall()[0]
+ def getInstance(self):
+ return self.solr_interface
+
- # for result in si.query(name="Ticket").execute():
- # print result
Modified: bloodhound/branches/bep_0014_solr/bloodhound_solr/setup.py
URL:
http://svn.apache.org/viewvc/bloodhound/branches/bep_0014_solr/bloodhound_solr/setup.py?rev=1604058&r1=1604057&r2=1604058&view=diff
==============================================================================
--- bloodhound/branches/bep_0014_solr/bloodhound_solr/setup.py (original)
+++ bloodhound/branches/bep_0014_solr/bloodhound_solr/setup.py Fri Jun 20
00:39:42 2014
@@ -1,6 +1,6 @@
from setuptools import setup, find_packages
-PKG_INFO = {'bhsolr': ['htdocs/*.*', 'templates/*', 'schemadoc/*.xml'],
+PKG_INFO = {'bhsolr': ['schemadoc/*.xml'],
'bhsolr.search_resources' : [],
}
@@ -8,9 +8,9 @@ PKG_INFO = {'bhsolr': ['htdocs/*.*', 'te
ENTRY_POINTS = {
'trac.plugins': [
- 'bhsolr.web_ui = bhsolr.web_ui',
'bhsolr.api = bhsolr.api',
'bhsolr.solr = bhsolr.solr',
+ 'bhsolr.admin = bhsolr.admin',
'bhsolr.solr_backend = bhsolr.solr_backend',
'bhsolr.search_resources.ticket_search =
bhsolr.search_resources.ticket_search',
'bhsolr.search_resources.milestone_search =
bhsolr.search_resources.milestone_search',