Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
alecs_myu
erp5
Commits
35c310bd
Commit
35c310bd
authored
Oct 29, 2014
by
Kazuhiko Shiozaki
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixup! full text: merge several full text AND queries into one.
parent
7655945f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
13 additions
and
5 deletions
+13
-5
product/ZSQLCatalog/SearchKey/MroongaFullTextKey.py
product/ZSQLCatalog/SearchKey/MroongaFullTextKey.py
+13
-5
No files found.
product/ZSQLCatalog/SearchKey/MroongaFullTextKey.py
View file @
35c310bd
...
...
@@ -40,15 +40,19 @@ class MroongaFullTextKey(DefaultKey):
same operator into just one query, to save SQL server from the burden to
do multiple fulltext lookups when one would suit the purpose.
"""
print
'_buildQuery: %r, %r, %r, %r'
%
(
operator_value_dict
,
logical_operator
,
parsed
,
group
)
column
=
self
.
getColumn
()
query_list
=
[]
append
=
query_list
.
append
def
escape
(
x
):
return
(
not
parsed
and
'"%s"'
%
x
.
replace
(
'"'
,
'
\
\
\
\
"'
)
or
x
).
replace
(
'('
,
'
\
\
\
\
('
).
replace
(
')'
,
'
\
\
\
\
)'
)
for
comparison_operator
,
value_list
in
operator_value_dict
.
iteritems
():
# We need to escape once here for Mroonga, and it will be
# escaped once more in OperatorBase._renderValue().
return
(
not
parsed
and
'"%s"'
%
x
.
replace
(
'"'
,
'
\
\
"'
)
or
x
).
replace
(
'('
,
'
\
\
('
).
replace
(
')'
,
'
\
\
)'
)
for
comparison_operator
in
(
'mroonga'
,
'mroonga_boolean'
):
value_list
=
operator_value_dict
.
pop
(
comparison_operator
,
[])
if
not
value_list
:
continue
if
logical_operator
==
'and'
:
joined_value
=
' '
.
join
(
escape
(
value
)
for
value
in
value_list
)
append
(
SimpleQuery
(
search_key
=
self
,
...
...
@@ -60,6 +64,10 @@ class MroongaFullTextKey(DefaultKey):
append
(
SimpleQuery
(
search_key
=
self
,
comparison_operator
=
comparison_operator
,
group
=
group
,
**
{
column
:
escape
(
value
)}))
# Other comparison operators are handled by the super class.
if
operator_value_dict
:
query_list
+=
super
(
MroongaFullTextKey
,
self
).
_buildQuery
(
operator_value_dict
,
logical_operator
,
parsed
,
group
)
return
query_list
verifyClass
(
ISearchKey
,
MroongaFullTextKey
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment