Author: ahorincar
Date: Mon Jun 2 22:29:12 2014
New Revision: 1599380
URL: http://svn.apache.org/r1599380
Log:
Created package for bloodhound_solr plugin, created class for instantiating a
SolrInteface object, created class and methods for indexing a single document
and wrote a custom Solr schema (which, at the moment, contains only some of the
required fields)
Added:
bloodhound/branches/bep_0014_solr/bloodhound_solr/
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/__init__.py
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/index.py
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/schemadoc/
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/schemadoc/schema.xml
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/solr.py
bloodhound/branches/bep_0014_solr/bloodhound_solr/setup.py
Added: bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/__init__.py
URL:
http://svn.apache.org/viewvc/bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/__init__.py?rev=1599380&view=auto
==============================================================================
(empty)
Added: bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/index.py
URL:
http://svn.apache.org/viewvc/bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/index.py?rev=1599380&view=auto
==============================================================================
--- bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/index.py (added)
+++ bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/index.py Mon Jun
2 22:29:12 2014
@@ -0,0 +1,24 @@
+import sunburnt
+from solr import Solr
+
+class SolrIndex(object):
+ def __init__(self, solr_instance):
+ self.solr_instance = solr_instance
+
+ def index(self, doc):
+ self.solr_instance.solr_interface.add(doc)
+ self.solr_instance.solr_interface.commit()
+
+ def query(self, query):
+ self.solr_instance.solr_interface.query(query)
+
+if __name__ == '__main__':
+
+ document = {"id":"0553573403",
+ "name": "Ticket 1"}
+
+ si = Solr("http://localhost:8983/solr/")
+ sindex = SolrIndex(si)
+ sindex.index(document)
+ sindex.query("Ticket")
+
Added:
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/schemadoc/schema.xml
URL:
http://svn.apache.org/viewvc/bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/schemadoc/schema.xml?rev=1599380&view=auto
==============================================================================
---
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/schemadoc/schema.xml
(added)
+++
bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/schemadoc/schema.xml
Mon Jun 2 22:29:12 2014
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!-- A custom Solr schema containing BH searchable fields; not yet finished -->
+<schema name="example" version="1.5">
+
+<fields>
+ <field name="_version_" type="long" indexed="true" stored="true"/>
+ <field name="_root_" type="string" indexed="true" stored="false"/>
+
+ <!-- BH fields -->
+ <field name="unique_id" type="string" indexed="true" stored="true"
required="true" multiValued="false" />
+ <field name="id" type="string" indexed="true" stored="true" required="true"
multiValued="false" />
+ <field name="type" type="string" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="product" type="string" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="milestone" type="string" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="time" type="date" indexed="true" stored="true" required="true"
multiValued="false"/>
+ <field name="due" type="date" indexed="true" stored="true" required="true"
multiValued="false"/>
+ <field name="completed" type="date" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="author" type="string" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="component" type="string" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="status" type="string" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="resolution" type="string" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="keywords" type="string" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="summary" type="text_general" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="content" type="text_general" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="changes" type="text_general" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="owner" type="text_general" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="repository" type="text_general" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="revision" type="text_general" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="message" type="text_general" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="required_permission" type="string" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="name" type="text_general" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field name="query_suggestion_basket" type="text_general" indexed="true"
stored="true" required="true" multiValued="false"/>
+ <field name="relations" type="lowercase" indexed="true" stored="true"
required="true" multiValued="false"/>
+ <field/>
+
+
+ <field name="name" type="text_general" indexed="true" stored="true"/>
+</fields>
+
+<uniqueKey>unique_id</uniqueKey>
+
+<copyField source="name" dest="text"/>
+
+<types>
+ <!-- Field type definitions -->
+ <fieldType name="string" class="solr.StrField" sortMissingLast="true" />
+ <fieldType name="long" class="solr.TrieLongField" precisionStep="0"
positionIncrementGap="0"/>
+
+ <fieldType name="text_general" class="solr.TextField"
positionIncrementGap="100">
+ <analyzer type="index">
+ <tokenizer class="solr.StandardTokenizerFactory"/>
+ <filter class="solr.StopFilterFactory" ignoreCase="true"
words="stopwords.txt" />
+ <filter class="solr.LowerCaseFilterFactory"/>
+ </analyzer>
+ <analyzer type="query">
+ <tokenizer class="solr.StandardTokenizerFactory"/>
+ <filter class="solr.StopFilterFactory" ignoreCase="true"
words="stopwords.txt" />
+ <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
ignoreCase="true" expand="true"/>
+ <filter class="solr.LowerCaseFilterFactory"/>
+ </analyzer>
+ </fieldType>
+ <fieldType name="date" class="solr.TrieDateField" precisionStep="0"
positionIncrementGap="0"/>
+ <fieldType name="lowercase" class="solr.TextField"
positionIncrementGap="100">
+ <analyzer>
+ <tokenizer class="solr.KeywordTokenizerFactory"/>
+ <filter class="solr.LowerCaseFilterFactory" />
+ </analyzer>
+</fieldType>
+
+</schema>
+
Added: bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/solr.py
URL:
http://svn.apache.org/viewvc/bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/solr.py?rev=1599380&view=auto
==============================================================================
--- bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/solr.py (added)
+++ bloodhound/branches/bep_0014_solr/bloodhound_solr/bhsolr/solr.py Mon Jun 2
22:29:12 2014
@@ -0,0 +1,10 @@
+from sunburnt import SolrInterface
+from httplib2 import Http
+
+class Solr():
+
+ def __init__(self, solr_url, schema_file):
+ """ Creates a SolrInterface object with the solr server url and a custom
schema
+ file"""
+ self.solr_url = solr_url
+ self.solr_interface = SolrInterface(url=solr_url, schemadoc=schema_file)
Added: 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=1599380&view=auto
==============================================================================
--- bloodhound/branches/bep_0014_solr/bloodhound_solr/setup.py (added)
+++ bloodhound/branches/bep_0014_solr/bloodhound_solr/setup.py Mon Jun 2
22:29:12 2014
@@ -0,0 +1,17 @@
+"""setup for embeddable objects plugin"""
+from setuptools import setup
+
+setup(
+ name = 'BloodhoundSolrPlugin',
+ version = '0.1',
+ description = "Apache Solr support for Apache(TM) Bloodhound.",
+ author = "Apache Bloodhound",
+ license = "Apache License v2",
+ url = "http://bloodhound.apache.org/",
+ packages = ['bhsolr',],
+ package_data = {'bhsolr' : []},
+ entry_points = {'trac.plugins': ['bhsolr.index = bhsolr.index'],},
+ test_suite='bhsorl.tests.test_suite',
+)
+
+