improved the search feature

Change-Id: Ia714ffade38edc9dd19b70ba37f996e6705ce057
Signed-off-by: SJ <sj@acts.hu>
This commit is contained in:
SJ 2017-05-06 20:09:39 +02:00
parent 12ea64c90b
commit 961ae7afee
5 changed files with 11 additions and 18 deletions

View File

@ -38,6 +38,7 @@
#define QUEUE_ID_LEN 16
#define IPLEN 16+1
#define KEYLEN 56
#define MIN_EMAIL_ADDRESS_LEN 9
#define CRLF "\n"

View File

@ -710,7 +710,7 @@ int parse_line(char *buf, struct parser_state *state, struct session_data *sdata
memcpy(&(state->b_from[strlen(state->b_from)]), puf, len);
if(does_it_seem_like_an_email_address(puf) == 1 && state->b_from_domain[0] == '\0' && len > 5){
if(len >= MIN_EMAIL_ADDRESS_LEN && does_it_seem_like_an_email_address(puf) == 1 && state->b_from_domain[0] == '\0'){
if(q && strlen(q) > 5){
memcpy(&(state->b_from_domain), q+1, strlen(q+1)-1);
if(strstr(sdata->mailfrom, "<>")){
@ -752,11 +752,11 @@ int parse_line(char *buf, struct parser_state *state, struct session_data *sdata
memcpy(&(state->b_to[state->tolen]), puf, len);
state->tolen += len;
if(does_it_seem_like_an_email_address(puf) == 1){
if(len >= MIN_EMAIL_ADDRESS_LEN && does_it_seem_like_an_email_address(puf) == 1){
if(is_email_address_on_my_domains(puf, data) == 1) sdata->internal_recipient = 1;
else sdata->external_recipient = 1;
//q = strchr(puf, '@');
if(q){
if(findnode(state->rcpt_domain, q+1) == NULL){
addnode(state->rcpt_domain, q+1);
@ -775,6 +775,11 @@ int parse_line(char *buf, struct parser_state *state, struct session_data *sdata
}
else if(state->message_state == MSG_BODY && len >= cfg->min_word_len && state->bodylen < BIGBUFSIZE-len-1){
// 99% of email addresses are longer than 8 characters
if(len >= MIN_EMAIL_ADDRESS_LEN && does_it_seem_like_an_email_address(puf)){
fix_email_address_for_sphinx(puf);
}
memcpy(&(state->b_body[state->bodylen]), puf, len);
state->bodylen += len;
}
@ -783,4 +788,3 @@ int parse_line(char *buf, struct parser_state *state, struct session_data *sdata
return 0;
}

View File

@ -623,8 +623,6 @@ void translateLine(unsigned char *p, struct parser_state *state){
if(url == 1) url = 0;
}
if(*p == '@') *p = 'X';
if(delimiter_characters[(unsigned int)*p] != ' ') *p = ' ';
/* we MUSTN'T convert it to lowercase in the 'else' case, because it breaks utf-8 encoding! */

View File

@ -9,7 +9,7 @@ static char delimiter_characters[] = {
'x',' ','"','#', ' ','%','&','x', '(',')','*','+', ',',' ',' ','/',
' ',' ',' ',' ', ' ',' ',' ',' ', ' ',' ',':',';', '<','=','>','?',
'@',' ',' ',' ', ' ',' ',' ',' ', ' ',' ',' ',' ', ' ',' ',' ',' ',
' ',' ',' ',' ', ' ',' ',' ',' ', ' ',' ',' ',' ', ' ',' ',' ',' ',
' ',' ',' ',' ', ' ',' ',' ',' ', ' ',' ',' ','[', '\\',']','^','_',
'`',' ',' ',' ', ' ',' ',' ',' ', ' ',' ',' ',' ', ' ',' ',' ',' ',
' ',' ',' ',' ', ' ',' ',' ',' ', ' ',' ',' ','{', '|','}','~','x',

View File

@ -148,20 +148,10 @@ class ControllerSearchHelper extends Controller {
$from .= " $v";
}
else {
if($prev_token_is_email == 1) {
$prev_token_is_email = 0;
$from .= " $v";
}
else {
$match .= ' ' . $v;
}
$match .= ' ' . $v;
}
}
if($match && $match != ' ' . $this->data['text_enter_search_terms']) {
$match = "@(subject,body) $match";
}
if($from) { $match = $from . ' ' . $match; }