Merge branch 'master' of github.com:collective/collective.solr
Conflicts: CHANGES.txt
This commit is contained in:
commit
f41e273738
27
CHANGES.txt
27
CHANGES.txt
|
@ -4,10 +4,19 @@ Changelog
|
|||
4.0 - unreleased
|
||||
------------------
|
||||
|
||||
- Make sure slashes are properly escaped in the search query. Solr 4.0 added
|
||||
regular expression support, which means that '/' is now a special character
|
||||
and must be escaped if searching for literal forward slash.
|
||||
[timo]
|
||||
|
||||
- Implement the getDataOrigin method for the FlareContentListingObject that
|
||||
plone.app.contentlisting defines and that plone.app.search expects to exist.
|
||||
[timo]
|
||||
|
||||
- Use tika for extracting binary content.
|
||||
[tom_gross]
|
||||
|
||||
- Plone 4.3 compatibility of search view
|
||||
- Plone 4.3 compatibility of search view
|
||||
[tom_gross]
|
||||
|
||||
- Introduce ICheckIndexable-adapter for checking if an object is indexable.
|
||||
|
@ -24,7 +33,7 @@ Changelog
|
|||
|
||||
3.1 - 2013-02-16
|
||||
----------------
|
||||
|
||||
|
||||
- Add datehandler support for python date objects.
|
||||
[jcbrand]
|
||||
|
||||
|
@ -37,6 +46,7 @@ Changelog
|
|||
- Add inthandler support for not indexing Integers that are None.
|
||||
[do3cc]
|
||||
|
||||
|
||||
3.0 - 2012-02-06
|
||||
----------------
|
||||
|
||||
|
@ -44,6 +54,7 @@ Changelog
|
|||
https://github.com/Jarn/collective.solr/issues/12
|
||||
[mj]
|
||||
|
||||
|
||||
3.0b5 - 2011-12-07
|
||||
------------------
|
||||
|
||||
|
@ -63,6 +74,7 @@ Changelog
|
|||
- Fix control panel adapter to save the search_pattern as utf-8.
|
||||
[ggozad]
|
||||
|
||||
|
||||
3.0b4 - 2011-11-10
|
||||
------------------
|
||||
|
||||
|
@ -70,6 +82,7 @@ Changelog
|
|||
like the membrane catalogs.
|
||||
[hannosch]
|
||||
|
||||
|
||||
3.0b3 - 2011-11-09
|
||||
------------------
|
||||
|
||||
|
@ -83,6 +96,7 @@ Changelog
|
|||
- Tweak search form to better match sunburst proportions.
|
||||
[elro]
|
||||
|
||||
|
||||
3.0b2 - 2011-10-05
|
||||
------------------
|
||||
|
||||
|
@ -91,6 +105,7 @@ Changelog
|
|||
for the facet field with the same name.
|
||||
[mj]
|
||||
|
||||
|
||||
3.0b1 - 2011-09-27
|
||||
------------------
|
||||
|
||||
|
@ -98,6 +113,7 @@ Changelog
|
|||
to keep up with the default field settings of the text field.
|
||||
[hannosch, mj]
|
||||
|
||||
|
||||
3.0a5 - 2011-09-26
|
||||
------------------
|
||||
|
||||
|
@ -108,6 +124,7 @@ Changelog
|
|||
- Include CMFCore's `permissions.zcml`.
|
||||
[witekdev, hannosch]
|
||||
|
||||
|
||||
3.0a4 - 2011-08-22
|
||||
------------------
|
||||
|
||||
|
@ -115,6 +132,7 @@ Changelog
|
|||
explicitly.
|
||||
[hannosch]
|
||||
|
||||
|
||||
3.0a3 - 2011-08-22
|
||||
------------------
|
||||
|
||||
|
@ -138,6 +156,7 @@ Changelog
|
|||
* Standardize on `solr` as the i18n domain.
|
||||
[hannosch]
|
||||
|
||||
|
||||
3.0a2 - 2011-07-10
|
||||
------------------
|
||||
|
||||
|
@ -167,6 +186,7 @@ Changelog
|
|||
its new ICU-based text field.
|
||||
[hannosch]
|
||||
|
||||
|
||||
3.0a1 - 2011-06-23
|
||||
------------------
|
||||
|
||||
|
@ -214,6 +234,7 @@ Changes
|
|||
* Updated example config to collective.recipe.solrinstance 3.1 and Solr 3.2.
|
||||
[hannosch]
|
||||
|
||||
|
||||
2.0 - 2011-06-04
|
||||
----------------
|
||||
|
||||
|
@ -221,6 +242,7 @@ Changes
|
|||
Solr works and how we integrate with it.
|
||||
[hannosch]
|
||||
|
||||
|
||||
2.0b2 - 2011-05-18
|
||||
------------------
|
||||
|
||||
|
@ -238,6 +260,7 @@ Changes
|
|||
* Avoid using the deprecated `five:implements` directive.
|
||||
[hannosch]
|
||||
|
||||
|
||||
2.0b1 - 2011-04-06
|
||||
------------------
|
||||
|
||||
|
|
|
@ -18,4 +18,4 @@ def path_depth(obj, **kwargs):
|
|||
def path_parents(obj, **kwargs):
|
||||
""" return all parent paths leading up to the object """
|
||||
elements = obj.getPhysicalPath()
|
||||
return ['/'.join(elements[:n+1]) for n in xrange(1, len(elements))]
|
||||
return ['/'.join(elements[:n + 1]) for n in xrange(1, len(elements))]
|
||||
|
|
|
@ -78,7 +78,9 @@
|
|||
factory=".vocabularies.SolrIndexes"
|
||||
name="collective.solr.indexes" />
|
||||
|
||||
<utility factory=".vocabularies.I18NFacetTitlesVocabularyFactory" />
|
||||
<utility
|
||||
factory=".vocabularies.I18NFacetTitlesVocabularyFactory"
|
||||
name="I18NFacetTitlesVocabularyFactory" />
|
||||
|
||||
<!-- Use the proper portal_types tool for type titles -->
|
||||
<utility
|
||||
|
|
|
@ -19,6 +19,9 @@ class FlareContentListingObject(object):
|
|||
def getObject(self):
|
||||
return self.flare.getObject()
|
||||
|
||||
def getDataOrigin(self):
|
||||
return self.flare.getObject()
|
||||
|
||||
def getPath(self):
|
||||
return self.flare.getPath()
|
||||
|
||||
|
@ -32,7 +35,8 @@ class FlareContentListingObject(object):
|
|||
return IUUID(self.getObject())
|
||||
|
||||
def getIcon(self):
|
||||
return getMultiAdapter((self.getObject(), getRequest(), self.flare),
|
||||
return getMultiAdapter(
|
||||
(self.getObject(), getRequest(), self.flare),
|
||||
interface=IContentIcon)()
|
||||
|
||||
def getSize(self):
|
||||
|
@ -98,7 +102,8 @@ class FlareContentListingObject(object):
|
|||
return self.flare.Type
|
||||
|
||||
def ContentTypeClass(self):
|
||||
return "contenttype-" + getUtility(IIDNormalizer).normalize(self.PortalType())
|
||||
return "contenttype-" + getUtility(IIDNormalizer).normalize(
|
||||
self.PortalType())
|
||||
|
||||
def PortalType(self):
|
||||
return self.flare.portal_type
|
||||
|
|
|
@ -80,7 +80,7 @@ def mangleQuery(keywords, config, schema):
|
|||
simple_term = isSimpleTerm(value)
|
||||
if pattern and isSimpleSearch(value):
|
||||
base_value = value
|
||||
if simple_term: # use prefix/wildcard search
|
||||
if simple_term: # use prefix/wildcard search
|
||||
value = '(%s* OR %s)' % (prepare_wildcard(value), value)
|
||||
elif isWildCard(value):
|
||||
value = prepare_wildcard(value)
|
||||
|
@ -90,7 +90,7 @@ def mangleQuery(keywords, config, schema):
|
|||
base_value=base_value)
|
||||
keywords[key] = set([value]) # add literal query parameter
|
||||
continue
|
||||
elif simple_term: # use prefix/wildcard search
|
||||
elif simple_term: # use prefix/wildcard search
|
||||
keywords[key] = '(%s* OR %s)' % (
|
||||
prepare_wildcard(value), value)
|
||||
continue
|
||||
|
@ -106,7 +106,15 @@ def mangleQuery(keywords, config, schema):
|
|||
params = keywords['%s_parents' % key] = set()
|
||||
for p in path:
|
||||
base = len(p.split('/'))
|
||||
params.add(tmpl % (key, base + (depth and 1), base + depth, key, p))
|
||||
params.add(
|
||||
tmpl % (
|
||||
key,
|
||||
base + (depth and 1),
|
||||
base + depth,
|
||||
key,
|
||||
p
|
||||
)
|
||||
)
|
||||
del args['depth']
|
||||
elif key == 'effectiveRange':
|
||||
if isinstance(value, DateTime):
|
||||
|
|
|
@ -95,7 +95,12 @@ class Search(object):
|
|||
elif not value: # solr doesn't like empty fields (+foo:"")
|
||||
if not name:
|
||||
continue
|
||||
logger.info('empty search term form "%s:%s", aborting buildQuery' % (name,value))
|
||||
logger.info(
|
||||
'empty search term form "%s:%s", aborting buildQuery' % (
|
||||
name,
|
||||
value
|
||||
)
|
||||
)
|
||||
return {}
|
||||
elif field.class_ == 'solr.BoolField':
|
||||
if not isinstance(value, (tuple, list)):
|
||||
|
@ -135,6 +140,11 @@ class Search(object):
|
|||
value = '"%s"' % value
|
||||
else:
|
||||
value = quote(value)
|
||||
# Solr 4.0 added regular expression support, which means
|
||||
# that '/' is now a special character and must be escaped
|
||||
# if searching for literal forward slash.
|
||||
if '/' in value:
|
||||
value = value.replace('/', '\/')
|
||||
if not value: # don't search for empty strings, even quoted
|
||||
continue
|
||||
else:
|
||||
|
|
|
@ -768,7 +768,7 @@ class SolrServerTests(SolrTestCase):
|
|||
self.assertEqual(search('Title', sort_on='Title',
|
||||
sort_order='reverse'),
|
||||
sorted([i['Title'] for i in first_level_objs], reverse=True))
|
||||
required = [i['getId'] for i in sorted(first_level_objs,
|
||||
required = [i['getId'] for i in sorted(first_level_objs,
|
||||
key=itemgetter('Title'), reverse=True)]
|
||||
self.assertEqual(search('getId', sort_on='Title',
|
||||
sort_order='descending'), required)
|
||||
|
@ -776,7 +776,7 @@ class SolrServerTests(SolrTestCase):
|
|||
sorted([i['Title'] for i in first_level_objs])[:4] + ['?' for i in range(len(first_level_objs)-4)])
|
||||
self.assertEqual(search('Title', sort_on='Title', sort_order='reverse',
|
||||
sort_limit='3'),
|
||||
sorted([i['Title'] for i in first_level_objs], reverse=True)[:3] +
|
||||
sorted([i['Title'] for i in first_level_objs], reverse=True)[:3] +
|
||||
['?' for i in range(len(first_level_objs)-3)])
|
||||
# test sort index aliases
|
||||
schema = self.search.getManager().getSchema()
|
||||
|
|
Loading…
Reference in New Issue