• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Поиск

  • Автор темы wowa
  • Дата начала
W

wowa

Подскажите, пожалуйста...
У меня есть куча документов со значениями "Беларусь"
Делаю поиск
stSearch = "Беларусь"
Set dcCollection = db.Search(stSearch,Nothing,0)

Все находит правильно

Подскажите , как сделать , что если stSearch = "БЕЛ", или "бел" , или например "ларусь" , оно находило теже документы
или например если есть значение в доке "Республика Беларусь", чтобы оно тоже нашло этот документ

Насколько я понимаю, нужно использовать @Like для подстроки, но я не понимаю как это куда всунуть...
 
M

morpheus

Для: wowa
первое, и поле и значение привести к одному регистру
@LowerCase и Lcase
Далее - использовать @Contains

пример
{ @Contains( @LOwerCase(MY_COOL_FIELD); } & lcase(doc.MyField(0) ) & { ) }
 
W

wowa

Понимаю теоритически, а как сделать практически - не понял...........

Есть документы, у них одно поле "Поле1", и куча значений

Был у меня поиск
stWordSearch = uidoc.FieldGetText("полеNNN") - поле для поиска
т.е. пусть stWordSearch="БЕЛАРУСЬ"

stSearch = "Поле1=" & """" & stWordSearch & """"
Set dcCollection = db.Search(stSearch,Nothing,0)


А как сюда втюхать
{ @Contains( @LOwerCase(MY_COOL_FIELD); } & lcase(doc.MyField(0) ) & { ) }
не знаю...
 
M

morpheus

<!--QuoteBegin-wowa+30:08:2007, 11:30 -->
<span class="vbquote">(wowa @ 30:08:2007, 11:30 )</span><!--QuoteEBegin-->stSearch = "Поле1=" & """" & stWordSearch & """"
[snapback]76820" rel="nofollow" target="_blank[/snapback]​
[/quote]

stSearch = { @Contains( @LOwerCase(Поле1); "} & lcase(stWordSearch ) & {" ) }
 
W

wowa

Для: Morpheus
Спасибо большое!!!!!!!!!!!!!!
+1
 
W

wowa

возникли новые трудности, может кто поможет
<!--QuoteBegin-Morpheus+30:08:2007, 12:16 -->
<span class="vbquote">(Morpheus @ 30:08:2007, 12:16 )</span><!--QuoteEBegin-->stSearch = { @Contains( @LOwerCase(Поле1); "} & lcase(stWordSearch ) & {" ) }
[snapback]76824" rel="nofollow" target="_blank[/snapback]​
[/quote]
Все это хорошо...,но
если в поле будет "Республика Беларусь", а в поиске "Беларусь Республика", то оно не найдет документ..
и еще нужно отсортировать
Вообщем как я понимаю надо использовать FTSearch...
как составить в таком случае запрос? Плз...
 
R

Ronchik

<!--QuoteBegin-wowa+31:08:2007, 11:43 -->
<span class="vbquote">(wowa @ 31:08:2007, 11:43 )</span><!--QuoteEBegin-->Вообщем как я понимаю надо использовать FTSearch...
[snapback]76929" rel="nofollow" target="_blank[/snapback]​
[/quote]
просто вводим строку "Республика Беларусь"
 
W

wowa

<!--QuoteBegin-wowa+31:08:2007, 11:43 -->
<span class="vbquote">(wowa @ 31:08:2007, 11:43 )</span><!--QuoteEBegin-->stSearch = { @Contains( @LOwerCase(Поле1); "} & lcase(stWordSearch ) & {" ) }
[snapback]76929" rel="nofollow" target="_blank[/snapback]​
[/quote]
А это сработает в FTSearch?
 
R

Ronchik

Для: wowa
нет ....входящий параметр для процедуры FTSearch строка а не формула.....он твою переменную воспримет как строку
 
M

morpheus

Для: Ronchik
ну поле , если не ошибаюсь в фтсёрче надо обозначать через квадратные скобки
 
W

wowa

Ну хорошо... смотрите... если....

пусть есть документы со значением поля1 = "Беларусь"

Set dcCollection = db.FTSearch("FIELD поле1= Беларусь"....
то оно мне находит правильно

Если
Set dcCollection = db.FTSearch("FIELD поле1= БЕЛАРУСЬ"....
то вроде тоже правильно

Если
Set dcCollection = db.FTSearch("FIELD поле1= Бел"...
то оно не найдет

пусть есть документы со значением поля1 = "Республика Беларусь"

Если
Set dcCollection = db.FTSearch("FIELD поле1= Беларусь Республика"...
то оно не найдет

КАк можно избавиться от этих проблем????
 
R

Ronchik

<!--QuoteBegin-wowa+30:08:2007, 10:15 -->
<span class="vbquote">(wowa @ 30:08:2007, 10:15 )</span><!--QuoteEBegin-->Set dcCollection = db.Search(stSearch,Nothing,0)
[snapback]76804" rel="nofollow" target="_blank[/snapback]​
[/quote]
используем это
потом такая формула для переменной stSearch
Код:
stSearch = { @Contains( @LOwerCase(Поле1);@Explode( "} & lcase(stWordSearch ) & {";" ") ) }
вот этой функцией @Explode превращаем строку в массив по разделителю пробел
 
W

wowa

Для: Ronchik
все классно, все работает, вот только можно ли на search сделать
<!--QuoteBegin-wowa+31:08:2007, 11:43 -->
<span class="vbquote">(wowa @ 31:08:2007, 11:43 )</span><!--QuoteEBegin-->и еще нужно отсортировать
[snapback]76929" rel="nofollow" target="_blank[/snapback]​
[/quote]
т.е. сортировка по совпадениям чем больше совпадений тем выше
т.е. ввожу поиск 3 слова
дак вот доки у которых есть эти 3 слова должны быть выше , чем те, у которых 2
в FtSearch это функция стоит автоматом вроде...
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Для: wowa
<!--QuoteBegin-wowa+31:08:2007, 15:00 -->
<span class="vbquote">(wowa @ 31:08:2007, 15:00 )</span><!--QuoteEBegin-->Если
Set dcCollection = db.FTSearch("FIELD поле1= Бел"...
то оно не найдет
[snapback]76954" rel="nofollow" target="_blank[/snapback]​
[/quote]
Пиши: FIELD поле1= Бел*

<!--QuoteBegin-wowa+31:08:2007, 15:00 -->
<span class="vbquote">(wowa @ 31:08:2007, 15:00 )</span><!--QuoteEBegin-->Set dcCollection = db.FTSearch("FIELD поле1= Беларусь Республика"...
[snapback]76954" rel="nofollow" target="_blank[/snapback]​
[/quote]
Пиши: FIELD поле1= Беларусь AND Республика
 
W

wowa

<!--QuoteBegin-Medevic+31:08:2007, 14:43 -->
<span class="vbquote">(Medevic @ 31:08:2007, 14:43 )</span><!--QuoteEBegin-->Пиши: FIELD поле1= Беларусь AND Республика
[snapback]76962" rel="nofollow" target="_blank[/snapback]​
[/quote]
Тут FIELD поле1= Беларусь AND FIELD поле1=Республика
ну да ладно....
Как сделать чтобы документы сортировались по совпадениям чем больше совпадений тем выше
Мне говорят, что в FTSearch оно по умолчанию, чуть что смотеть хелп,.. там есть sortoptions% и otheroptions%
Я просмотрел, и все равно у меня не получается...
Может кто знает?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
<!--QuoteBegin-wowa+3:09:2007, 16:36 -->
<span class="vbquote">(wowa @ 3:09:2007, 16:36 )</span><!--QuoteEBegin-->Тут FIELD поле1= Беларусь AND FIELD поле1=Республика
[snapback]77123" rel="nofollow" target="_blank[/snapback]​
[/quote]
Ага.
Можно в скобки взять. FIELD поле1= (Беларусь AND Республика)

<!--QuoteBegin-wowa+3:09:2007, 16:36 -->
<span class="vbquote">(wowa @ 3:09:2007, 16:36 )</span><!--QuoteEBegin-->Как сделать чтобы документы сортировались по совпадениям чем больше совпадений тем выше
Мне говорят, что в FTSearch оно по умолчанию, чуть что смотеть хелп,.. там есть sortoptions% и otheroptions%
Я просмотрел, и все равно у меня не получается...
[snapback]77123" rel="nofollow" target="_blank[/snapback]​
[/quote]
Так и есть. Второй параметр - FT_SCORES.
Может индексы обновить?
 
W

wowa

<!--QuoteBegin-Medevic+3:09:2007, 15:53 -->
<span class="vbquote">(Medevic @ 3:09:2007, 15:53 )</span><!--QuoteEBegin-->Можно в скобки взять. FIELD поле1= (Беларусь AND Республика)
[snapback]77126" rel="nofollow" target="_blank[/snapback]​
[/quote]
Хотя в принципе, чтобы оно находило документы со значениями "Беларусь", "Республика", "Республика Беларусь",
то нужно
FIELD поле1= (Беларусь OR Республика)
НО все равно,.. я коллекцию записываю в папку..а там документы сверху вниз вот так, например:
Беларусь
Республика Беларусь
Республика

а должно быть, чтобы РБ было первым
Вот так я ищу
Set dcCollection = db.FTSearch(stSearch , 0, FT_SCORES)
Вот так например получается строка запроса:
(FIELD поле1=Беларусь* OR FIELD поле1=Республика*)
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
<!--QuoteBegin-wowa+3:09:2007, 17:33 -->
<span class="vbquote">(wowa @ 3:09:2007, 17:33 )</span><!--QuoteEBegin-->НО все равно,.. я коллекцию записываю в папку..а там документы сверху вниз вот так, например:
[snapback]77129" rel="nofollow" target="_blank[/snapback]​
[/quote]
Ну теперь понятно в чем проблема. Метод FTSearch дает отсортированную коллекцию. А в папке стоит своя сортировка, не имеющая ничего общего с FTSearch.
 
W

wowa

Для: Medevic
упс..... спасибо...
Я думал оно отсортирует все как надо и поэтому мучал этот FTSearch..
Большое Спасибо!!!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!