1 / 1 / 0
Регистрация: 21.06.2007
Сообщений: 654
|
|
1 | |
Как реализовать полнотекстовую систему поиска по сайту?26.08.2007, 15:38. Показов 1367. Ответов 2
Метки нет (Все метки)
Как реализовать полнотекстовую систему поиска по сайту? Подскажите, может быть есть готовые программы?
Заранее благодарен, Дима.
0
|
26.08.2007, 15:38 | |
Ответы с готовыми решениями:
2
Как реализовать систему поиска? Реализовать систему поиска Реализовать систему поиска И и ИЛИ по базе данных Как подключить к сайту платёжную систему |
angel
|
|
27.08.2007, 08:16 | 2 |
Всем ХАЙ !
Ну с одной стороны - все просто: 1. Напиши паучка, который обойдет все твои странички, и сложит их в базу. 2. Просто потом ищи по базе - а-ля select Но, блин, вот если вопрос морфологии тебя волнует и ты хочешь действительно полнотекстовый поиск - то капец... работы дофига :-) |
Sergik
|
|
27.08.2007, 12:30 | 3 |
если есть index server, то лучше с ним, а так есть готовый пример (ищет в бд и по файлам), на www.exposokol.ru/search я такой делал, надо только обработку ошибок добавить:
<% function CheckFile(filnam) if Right(filnam,5)='.html' or Right(filnam,4)='.htm' or Right(filnam,4)='.stm' then CheckFile=true else CheckFile=false end function 'Вложенность папок до второго уровня function FilesName(folder) dim fn_tmp(1000) dim fn i=0 set fs=CreateObject('Scripting.FileSystemObject') 'корневые файлы set lfiles = fs.GetFolder(folder).files for each f in lfiles if CheckFile(f.name) then i=i+1 fn_tmp(i)=f.path end if next set lfolders=fs.GetFolder(folder).SubFolders For Each f in lfolders 'папки, в которых не надо искать if f.name<>'admin' and f.name<>'eng' and f.name<>'images' and f.name<>'inc' and f.name<>'_source' and f.name<>'scripts' and f.name<>'search' and f.name<>'user_images' then Set lfiles =fs.GetFolder(f.path).SubFolders For Each subf in lfiles 'файлы в каталогах второго порядка Set fc =fs.GetFolder(subf.path).Files For Each ff in fc if CheckFile(ff.name) then i=i+1 fn_tmp(i)=ff.path end if Next Next Set lfiles =fs.GetFolder(f.path).Files For Each subf in lfiles if CheckFile(subf.name) then i=i+1 fn_tmp(i)=subf.path end if Next end if Next redim fn(i) for j=0 to i fn(j)=fn_tmp(j) next FilesName=fn end function function no_tag2(contents) Dim regEx2 Set regEx2 = New RegExp regEx2.IgnoreCase = True regEx2.Global = True regEx2.Pattern = '<'&'%[^%]*%'&'>' contents = regEx2.Replace(contents, '') regEx2.Pattern = '<[^>]*>' contents = regEx2.Replace(contents, '') set regEx2=nothing no_tag2=contents end function 'возвращает виртуальный путь с первым слэшем function real_path_to_virtual(fName) s=replace(mid(fName,Len(Server.MapPath(' '))+1,Len(fName)-Len(Server.MapPath(' '))),' ','/') real_path_to_virtual=s end function 'возвращает название файла, если тег <title> написан маленькими буквами function get_file_title(sss) buff=sss if InStr(1,buff,'<title>')=0 or InStr(1,buff,'</title>')=0 then get_file_title='' else buff=mid(buff,Instr(1,buff,'<title>')+Len('<title>'), Instr(1,buff,'</title>')-Instr(1,buff,'<title>')-Len('<title>')) get_file_title=buff end if end function function get_file_description(buff) fd=buff if InStr(1,buff,'<meta name=''Description'' content=''')=0 then get_file_description='' else fd=mid(fd,Instr(1,fd,'<meta name=''Description'' content=''')+Len('<meta name=''Description'' content='''), Instr(InStr(1,fd,'<meta name=''Description'' content=''')+Len('<meta name=''Description'' content='''),fd,'''>')-Instr(1,fd,'<meta name=''Description'' content=''')-Len('<meta name=''Description'' bject('Scripting.FileSystemObject') dim result(1000,3) jj=0 for iCount=1 to UBound(files) Set fil = fls.OpenTextFile(files(iCount)) content=fil.readall fil.close title=get_file_title(content) source=no_tag2(content) set fil=nothing Set Matches = regEx.Execute(source) if Matches.count>0 then jj=jj+1 result(jj,3)=Matches.count result(jj,1)=real_path_to_virtual(files(iCount)) result(jj,2)=title end if next%> Найдено документов: <strong><%=jj%></strong> <% rec=10 start=(page-1)*rec+1 ends=start+rec-1 if start>jj then start=jj if ends>jj then ends=jj if jj<>0 then%> Показаны: с <%=start%> по <%=ends%> <% end if%> <% for i=jj to 2 step -1 for j=i-1 to 1 step -1 if result(i,3)>result(j,3) then temp=result(i,3) result(i,3)=result(j,3) result(j,3)=temp temp=result(i,2) result(i,2)=result(j,2) result(j,2)=temp temp=result(i,1) result(i,1)=result(j,1) result(j,1)=temp end if next next if jj<>0 then for i=start to ends%> <a href='<%=result(i,1)%>'><%=result(i,2)%></a> Найдено вхождений: <%=result(i,3)%> <% next i=1 while i<=int(jj/10)+1 start=(i-1)*rec+1 ends=i*rec if ends>jj then ends=jj if page=i then%> <b><%=start%>..<%=ends%></b> <% else%> <a href='javascript:document.form1.page.value=<%=i%>;document.form1.submit()'><%=st art%>..<%=ends%></a> <% end if i=i+1 wend else%> Документы не найдены, попробуйте сформулировать Ваш запрос по-другому. <% end if end if%> </body> </html> |
27.08.2007, 12:30 | |
27.08.2007, 12:30 | |
Помогаю со студенческими работами здесь
3
Реализация поиска по сайту как на Work.ua Поделитесь опытом как прикрепить к сайту платежную систему Удаление с запроса поиска точек, пробелов, символов (метод поиска по сайту) Реализация поиска по сайту - переход по станицам с сохранением запроса поиска Как сделать зависимый выпадающий список для поиска по сайту? ПОМОЩНИК ПО САЙТУ 3D Человек, как реализовать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |