Поиск

Тема в разделе "Lotus - Программирование", создана пользователем wowa, 30 авг 2007.

  1. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Подскажите, пожалуйста...
    У меня есть куча документов со значениями "Беларусь"
    Делаю поиск
    stSearch = "Беларусь"
    Set dcCollection = db.Search(stSearch,Nothing,0)

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

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

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: wowa
    первое, и поле и значение привести к одному регистру
    @LowerCase и Lcase
    Далее - использовать @Contains

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    db.FTSearch
     
  4. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Понимаю теоритически, а как сделать практически - не понял...........

    Есть документы, у них одно поле "Поле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) ) & { ) }
    не знаю...
     
  5. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--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 ) & {" ) }
     
  6. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Для: Morpheus
    Спасибо большое!!!!!!!!!!!!!!
    +1
     
  7. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    возникли новые трудности, может кто поможет
    <!--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...
    как составить в таком случае запрос? Плз...
     
  8. Ronchik

    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]
    просто вводим строку "Республика Беларусь"
     
  9. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    <!--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?
     
  10. Ronchik

    Ronchik Гость

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: Ronchik
    ну поле , если не ошибаюсь в фтсёрче надо обозначать через квадратные скобки
     
  12. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Ну хорошо... смотрите... если....

    пусть есть документы со значением поля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= Беларусь Республика"...
    то оно не найдет

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

    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
    Код (Text):
    stSearch = { @Contains( @LOwerCase(Поле1);@Explode( "} & lcase(stWordSearch ) & {";" ") ) }
    вот этой функцией @Explode превращаем строку в массив по разделителю пробел
     
  14. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Для: 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 это функция стоит автоматом вроде...
     
  15. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: 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 Республика
     
  16. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    <!--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%
    Я просмотрел, и все равно у меня не получается...
    Может кто знает?
     
  17. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--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.
    Может индексы обновить?
     
  18. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    <!--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=Республика*)
     
  19. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--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.
     
  20. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Для: Medevic
    упс..... спасибо...
    Я думал оно отсортирует все как надо и поэтому мучал этот FTSearch..
    Большое Спасибо!!!
     
Загрузка...

Поделиться этой страницей