[JQuery Javascript] обработка поискового запроса

12
rtyug
На сайте с 13.05.2009
Offline
263
1436

есть поиск с релевантностью и с морфологией английской и русской, допустим...

мне СУБД возвращается 10-20 разных длинных статей или около этого, какой-то текст....

как мне вывести красиво пользователю... участок текста где совапали эти слова из того где СУБД нашел...

можно ли на клиенте сделать как-то так чтобы получилось:

#
FreeBSD
- [ Перекласти цю сторінку ]
Этот раздел посвящён операционной системе FreeBSD - её установке, настройке, конфигурированию, а также превращению его (имеется ввиду компьютер с этой ...
lissyara.su/?id=1007 - Кеш - Подібне
#
forum.lissyara.su • Главная страница
- [ Перекласти цю сторінку ]
forum.lissyara.su. Мы - долго запрягаем, быстро ездим, и сильно тормозим. Пропустить. Список форумов; Изменить размер шрифта ...
forum.lissyara.su/ - Кеш - Подібне
#
Welcome to My Home Page
- [ Перекласти цю сторінку ]
PR 117911 HID parser, discussed at forum.lissyara.su download .PR 124902 VESA mode fixx for IBM T23 .PR 125454 Digiboard ISA 16 COMs ports, discussed at ...
paradox.org.ua/ - 15 год. тому - Кеш - Подібне
#
Samba в роли контроллера домена, без использования LDAP - SAMBA ...
- [ Перекласти цю сторінку ]
/usr/home/lissyara/>/usr/local/etc/rc.d/samba start ... Я вот удалил пользователя `lissyara` - а грохнулся, до кучи, мой аккаунт на фре smile Решается ...
http://www.samba.org.ua/articles/?section=...p;articleid=101 - Кеш - Подібне
#
Alex Keda (lissyara) | Weblancer.net
- [ Перекласти цю сторінку ]
10 апр 2010 ... Установка/настройка серверов под FreeBSD. Сервисы mail(exim)/www(apache,nginx)/DNS(bind)/ftp(proftpd/vsftpd/pure-ftpd)/etc... - любые.
http://www.weblancer.net/users/lissyara/ - Росія - Кеш - Подібне
#
Автомобильный каталог auto.lissyara.su
- [ Перекласти цю сторінку ]
На данной странице представлен полный каталог всех известных и неизвестных марок автомашин.
auto.lissyara.su/ - Кеш - Подібне
#
» Lissyara.su .:. Daemony's Live Blog .:.
- [ Перекласти цю сторінку ]
Lissyara.su. Пятница, 28 сентября, 2007 06:19:42 EEST. Исправления от 12 марта, 2009 16:01:03. Выделенные сервера дешевле обычного хостинга ...
live.daemony.org/freebsd/lissyarasu.html - Росія - Кеш
#
Populometer » lissyara.su (POP-6)
- [ Перекласти цю сторінку ]
http://www.lissyara.su - настройка и использование ОС FreeBSD на ... http://www.lissyara.su —> главная. главная. ... Sites that link to lissyara.su | Updated: 2010-04-02 ...
populometer.com/lissyara.su - Кеш

т.е. из найденого текста красиво вывести где в тексте эти поисковые слова?

====

просто на сервере очень ресурсоемко обработать длинные статьи, занимает порядка 10-20 сек.

никто не видел есть ли такая библиотека на js чтобы найти в найденом?

Спалил тему: Pokerstars вывод WMZ, etc на VISA 0% или SWIFT + Конверт USD/GBP,etc (net profit $0,5 млрд) (https://minfin.com.ua/blogs/94589307/115366/) Monobank - 50₴ на счет при рег. тут (https://clck.ru/DLX4r) | Номер SIP АТС Москва 7(495) - 0Ꝑ, 8(800) - 800Ꝑ/0Ꝑ (http://goo.gl/XOrCSn)
inse3t
На сайте с 08.05.2006
Offline
84
#1

Sphinx говорят быстро работает. Зачем на js искать в найденном? %)

Тут явно надо смотреть в сторону серверной обработки.

rtyug
На сайте с 13.05.2009
Offline
263
#2

понятно, спасибо, знаю: Sphinx, Яндекс-поиск и т.д. есть еще...

в серверной обработке стоит PgSQL, прямо в нем есть релевантность, русская морфология... и т.д. (самое главное хорошо работает поиск по больших таблицах в PgSQL, в отличае от MySQL по крайней мере как я понял)

=====

почему бы этот текст (статью, статьи) который возвращает PgSQL не распарсить на JS??

поиск и обработка длинного текста очень ресурсоемкая операция, занимает по длинной статье 5-20 сек. и грузить CPU на сервере...

может есть такая реализация на JS, или нету смысла реализовывать?

[Удален]
#3

продублировать процедуры pgsql на javascript (чтобы точно так же работал с морфологией) и будет очень элегантное решение

inse3t
На сайте с 08.05.2006
Offline
84
#4

А кеширование результатов поиска на что?

Например в memcachedb - можно долго хранить и быстро получать.

Я не вижу ни малейшего смысла в данном месте заморачиваться с js.

rtyug
На сайте с 13.05.2009
Offline
263
#5

MOP1, JS на клиенте и грузить сервер не будет... а причем тут процедура?

я написал скрипт на сервере и обработка по большим 10-20 статьям заняла 10-20 сек. и грузила CPU сервера!!

я вот подумал: почему бы не обработать на js этот текст на клиенте?

...но я так понял что такой библиотеки нету...

надо будет изобретать:) еще подумаю, стоит ли....

DeveloperRu
На сайте с 27.02.2009
Offline
72
#6
rtyug:
MOP1, JS на клиенте и грузить сервер не будет... а причем тут процедура?

я написал скрипт на сервере и обработка по большим 10-20 статьям заняла 10-20 сек. и грузила CPU сервера!!

я вот подумал: почему бы не обработать на js этот текст на клиенте?

...но я так понял что такой библиотеки нету...
надо будет изобретать:) еще подумаю, стоит ли....

хм.. что это за поиск по статьям за 10 секунд? можно узнать логику процесса ?

Ответы на вопросы (http://telenok.com)
[Удален]
#7
rtyug:
я написал скрипт на сервере и обработка по большим 10-20 статьям заняла 10-20 сек. и грузила CPU сервера!!

ну тут не скрипт виноват, давайте будем справедливы ;)

rtyug
На сайте с 13.05.2009
Offline
263
#8

а есть ли такой скрипт готовый, чтобы оно выводило как yandex и google?

я это не нашел...

(обработка длиного текста всегда ресурсоемкая операция... тем более больших статей 10-20)

...тогда лучше наверное взять Sphinx, Яндекс-поиск и т.д.

W
На сайте с 03.07.2007
Offline
36
#9

вот:

http://bartaz.github.com/sandbox.js/jquery.highlight.html

можно это поставить ) думаю справиться)

Лучшая веб студия Максимаф.ру (http://maksimaf.ru) ICQ : 464-338-997 MAil: wispoz@inbox.ru Телефон: 8(915) 368-45-93
rtyug
На сайте с 13.05.2009
Offline
263
#10

Wispoz, спасибо, попробую...

DeveloperRu, забыл отписаться, вот: http://www.x0.org.ua/view_content/84

я только не помню какая там версия, вродебы это последний мой...

rtyug добавил 14.06.2010 в 22:31


#####
##
## nice find (beautiful search engine)
##
#####

# $content - весь контент
# $word_all - поисковая фраза
# $max_world - число слов на которые должно быть разбита каждая строка

## PS все остальное сложно обяснить, все должно быть понятно


# $ Content - all content
# $ Word_all - Keyword
# $ Max_world - the number of words that should be broken down each row

## PS explained to all the rest is difficult, all should be clear



# $c->model('Quantum')->super_max($found) :

# find the maximum value in the array
# 1) the imaginary part of the value contains the array index
# 1,a) to the imaginary part of this figure matches the index
# 2) are removed before searching potornye values that occur the
# same number of times (the same number of matches)




sub Quantum_Search : Privat {

my ( $self, $c, $content, $word_all ) = @_;

my $max_world = 25;

$content =~ tr/ / /s;

my $words;

$word_all = Encode::encode( 'utf8', $word_all );
@$words = split( / /, $word_all );

my $word_one;

$word_one->[0] = $word_all;

my $hh;

foreach my $my ( split( / /, $content ) ) {

if ( $my && $my ne '' ) {
push @$hh, $my;
}

}

my $max_line = sprintf( '%.f', scalar(@$hh) / $max_world );

my $aa2;

my $i = 0;

for ( 0 .. $max_line ) {

$i = $_ * $max_world;

$aa2->[$_] = join( " ", @{$hh}[ $i .. ( $i + $max_world ) ] )
if ( @{$hh}[ $i .. ( $i + $max_world ) ] );

}

my $found = $c->forward( 'super_for', [ $aa2, $word_one ] );

my $out;

%$out = ();

$out = $c->forward( 'out_hash', [ $found, $out ] );

if ( scalar( keys %$out ) < 2 ) {

$found = $c->forward( 'super_for', [ $aa2, $words ] );

$out = $c->forward( 'out_hash', [ $found, $out ] );

}

my $search = ' ';

if ( scalar( keys %$out ) == 0 ) {

$search = ' ... ' . $aa2->[0];

}
else {

foreach my $key ( keys %$out ) {

$search .= ' ... ' . $aa2->[$key];

}

}

return $search;

}

sub out_hash : Privat {

my ( $self, $c, $found, $out ) = @_;

my @f;

my $count = 0;

while (1) {

$count++;

@f = $c->model('Quantum')->super_max($found);

last if ( !@f );

my ( $it, $ti ) = $f[0] =~ /(\d+).(\d+)/;

last if ( !$it || $it == 0 );

$out->{$ti} = $it;

splice @$found, $ti, 1;

last if ( $count == 3 );

}

return $out;

}

sub super_for : Privat {

my ( $self, $c, $aa2, $words ) = @_;

my $found;

foreach my $co ( 0 .. scalar(@$aa2) ) {

foreach my $word (@$words) {

if ( $aa2->[$co] && $word && $aa2->[$co] =~ /$word/i ) {

if ( $found->[$co] ) {

my ( $it, $ti ) = $found->[$co] =~ /(\d+).(\d+)/;

$found->[$co] = ( $it + 1 );
$found->[$co] .= '.';
$found->[$co] .= $co;

}
else {

$found->[$co] = '1.';
$found->[$co] .= $co;
}

}
else {

if ( !$found->[$co] ) {

$found->[$co] = '0.';
$found->[$co] .= $co;

}

}

}

}

return $found;
}














=head1 AUTHOR

Dmitriy

email: q7u5@ukr.net
www: http://www.x0.org.ua

=head1 LICENSE

This library is free software, you can redistribute it and/or modify
it under the same terms as Perl itself.

=cut

1;

@f = $c->model('Quantum')->super_max($found);

package MyApp::Model::Quantum;


use strict;
use warnings;
use parent 'Catalyst::Model';

use Quantum::Superpositions;

sub super_max {
my ( $self, $found ) = @_;

# find the maximum value in the array

# 1) the imaginary part of the value contains the array index
# 1,a) to the imaginary part of this figure matches the index
# 2) are removed before searching potornye values that occur the
# same number of times (the same number of matches)

my $super;

foreach (@$found) {

# 1) the imaginary part of the value contains the array index
# 1,a) to the imaginary part of this figure matches the index

my ( $it, $ti ) = $_ =~ /(\d+).(\d+)/;

next if ( $it == 0 );

# 2) are removed before searching potornye values that occur
# the same number of times (the same number of matches)
$super->{$it} = $_;

}

my $fo;
@$fo = map +( $super->{$_} ), keys %$super;

# # find the maximum value in the array
my @f = eigenstates( any(@$fo) >= all(@$fo) );

return @f;

}

=head1 NAME

MyApp::Model::Quantum - Catalyst Model

=head1 DESCRIPTION

Catalyst Model.

=head1 AUTHOR

Dmitriy

email: q7u5@ukr.net
WWW: http://www.x0.org.ua

=head1 LICENSE

This library is free software. You can redistribute it and/or modify
it under the same terms as Perl itself.

=cut

1;
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий