Skip to content

Commit 3b393b3

Browse files
committed
Updates to faceted search
1 parent f2e355f commit 3b393b3

File tree

1 file changed

+44
-42
lines changed

1 file changed

+44
-42
lines changed

readthedocs/search/faceted_search.py

Lines changed: 44 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,11 @@
99
PageDocument,
1010
ProjectDocument,
1111
)
12-
from readthedocs.search.signals import (
13-
before_domain_search,
14-
before_file_search,
15-
before_project_search,
16-
)
17-
1812
from readthedocs.core.utils.extend import SettingsOverrideObject
1913

2014
log = logging.getLogger(__name__)
2115

2216

23-
ALL_FACETS = ['project', 'version', 'doc_type', 'language', 'index']
24-
25-
2617
class RTDFacetedSearch(FacetedSearch):
2718

2819
def __init__(self, user, **kwargs):
@@ -31,12 +22,7 @@ def __init__(self, user, **kwargs):
3122
for facet in self.facets:
3223
if facet in kwargs:
3324
kwargs.setdefault('filters', {})[facet] = kwargs.pop(facet)
34-
35-
# Don't pass along unnecessary filters
36-
for f in ALL_FACETS:
37-
if f in kwargs:
38-
del kwargs[f]
39-
super(RTDFacetedSearch, self).__init__(**kwargs)
25+
super().__init__(**kwargs)
4026

4127
def search(self):
4228
"""
@@ -49,15 +35,6 @@ def search(self):
4935
"""
5036
s = super().search()
5137
s = s.source(exclude=['content', 'headers'])
52-
resp = self.signal.send(sender=self, user=self.user, search=s)
53-
if resp:
54-
# Signal return a search object
55-
try:
56-
s = resp[0][1]
57-
except AttributeError:
58-
log.exception(
59-
'Failed to return a search object from search signals'
60-
)
6138
# Return 25 results
6239
return s[:25]
6340

@@ -89,23 +66,8 @@ def query(self, search, query):
8966
return search
9067

9168

92-
class DomainSearch(RTDFacetedSearch):
93-
facets = {
94-
'project': TermsFacet(field='project'),
95-
'version': TermsFacet(field='version'),
96-
'doc_type': TermsFacet(field='doc_type'),
97-
}
98-
signal = before_domain_search
99-
doc_types = [DomainDocument]
100-
index = DomainDocument._doc_type.index
101-
fields = ('display_name^5', 'name')
102-
103-
104-
class ProjectSearch(RTDFacetedSearch):
105-
facets = {
106-
'language': TermsFacet(field='language')
107-
}
108-
signal = before_project_search
69+
class ProjectSearchBase(RTDFacetedSearch):
70+
facets = {'language': TermsFacet(field='language')}
10971
doc_types = [ProjectDocument]
11072
index = ProjectDocument._doc_type.index
11173
fields = ('name^10', 'slug^5', 'description')
@@ -121,6 +83,47 @@ class PageSearchBase(RTDFacetedSearch):
12183
fields = ['title^10', 'headers^5', 'content']
12284

12385

86+
class DomainSearchBase(RTDFacetedSearch):
87+
facets = {
88+
'project': TermsFacet(field='project'),
89+
'version': TermsFacet(field='version'),
90+
'doc_type': TermsFacet(field='doc_type'),
91+
}
92+
doc_types = [DomainDocument]
93+
index = DomainDocument._doc_type.index
94+
fields = ('display_name^5', 'name')
95+
96+
97+
class PageSearch(SettingsOverrideObject):
98+
99+
"""
100+
Allow this class to be overridden based on CLASS_OVERRIDES setting.
101+
This is primary used on the .com to adjust how we filter our search queries
102+
"""
103+
104+
_default_class = PageSearchBase
105+
106+
107+
class ProjectSearch(SettingsOverrideObject):
108+
109+
"""
110+
Allow this class to be overridden based on CLASS_OVERRIDES setting.
111+
This is primary used on the .com to adjust how we filter our search queries
112+
"""
113+
114+
_default_class = ProjectSearchBase
115+
116+
117+
class DomainSearch(SettingsOverrideObject):
118+
119+
"""
120+
Allow this class to be overridden based on CLASS_OVERRIDES setting.
121+
This is primary used on the .com to adjust how we filter our search queries
122+
"""
123+
124+
_default_class = DomainSearchBase
125+
126+
124127
class AllSearch(RTDFacetedSearch):
125128
facets = {
126129
'project': TermsFacet(field='project'),
@@ -129,7 +132,6 @@ class AllSearch(RTDFacetedSearch):
129132
'doc_type': TermsFacet(field='doc_type'),
130133
'index': TermsFacet(field='_index'),
131134
}
132-
signal = before_file_search
133135
doc_types = [DomainDocument, PageDocument, ProjectDocument]
134136
index = [DomainDocument._doc_type.index,
135137
PageDocument._doc_type.index,

0 commit comments

Comments
 (0)