Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
project
drupal
Commits
444c5e16
Commit
444c5e16
authored
Jan 07, 2008
by
Gábor Hojtsy
Browse files
#205920
by douggreen: short term searches were returning wrong results
parent
b571a82e
Changes
1
Hide whitespace changes
Inline
Side-by-side
modules/search/search.module
View file @
444c5e16
...
...
@@ -778,8 +778,8 @@ function search_parse_query($text) {
$queryor
=
array
();
$any
=
FALSE
;
foreach
(
$key
as
$or
)
{
list
(
$q
,
$
count
)
=
_search_parse_query
(
$or
,
$arguments2
);
$any
|=
$
count
;
list
(
$q
,
$
num_new_scores
)
=
_search_parse_query
(
$or
,
$arguments2
);
$any
|=
$
num_new_scores
;
if
(
$q
)
{
$queryor
[]
=
$q
;
$arguments
[]
=
$or
;
...
...
@@ -794,12 +794,15 @@ function search_parse_query($text) {
// Single ANDed term
else
{
$simple_and
=
TRUE
;
list
(
$q
,
$
count
)
=
_search_parse_query
(
$key
,
$arguments2
);
list
(
$q
,
$
num_new_scores
,
$num_valid_words
)
=
_search_parse_query
(
$key
,
$arguments2
);
if
(
$q
)
{
$query
[]
=
$q
;
$arguments
[]
=
$key
;
if
(
!
$num_valid_words
)
{
$simple
=
FALSE
;
}
// Each AND keyword needs to match at least once
$matches
+=
$
count
;
$matches
+=
$
num_new_scores
;
}
}
}
...
...
@@ -827,7 +830,8 @@ function search_parse_query($text) {
* Helper function for search_parse_query();
*/
function
_search_parse_query
(
&
$word
,
&
$scores
,
$not
=
FALSE
)
{
$count
=
0
;
$num_new_scores
=
0
;
$num_valid_words
=
0
;
// Determine the scorewords of this word/phrase
if
(
!
$not
)
{
$split
=
explode
(
' '
,
$word
);
...
...
@@ -837,13 +841,14 @@ function _search_parse_query(&$word, &$scores, $not = FALSE) {
$s
=
$num
?
((
int
)
ltrim
(
$s
,
'-0'
))
:
$s
;
if
(
!
isset
(
$scores
[
$s
]))
{
$scores
[
$s
]
=
$s
;
$
count
++
;
$
num_new_scores
++
;
}
$num_valid_words
++
;
}
}
}
// Return matching snippet and number of added words
return
array
(
"d.data "
.
(
$not
?
'NOT '
:
''
)
.
"LIKE '%% %s %%'"
,
$
count
);
return
array
(
"d.data "
.
(
$not
?
'NOT '
:
''
)
.
"LIKE '%% %s %%'"
,
$
num_new_scores
,
$num_valid_words
);
}
/**
...
...
Write
Preview
Supports
Markdown
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