Коллекция по совпадениям

wowa

Well-known member
01.02.2007
848
0
#1
Раньше задавал этот вопрос............
Есть куча документов с полем , ..
в Этом поле много значений, "Республика", "Беларусь", "Республика Беларусь", "Беларусь Республика", "Республика моя Беларусь" и т.д. , вообщем куча вариантов

В строке поиска, делаю запрос, найти "Республика Беларусь"
stSearch = "Беларусь* or Республика*" (или эту строку надо как-то переделать)

КАк мне сделать запрос, чтобы получилась коллекция по совпадениям

Set dcCollection = db.FTSearch( stSearch , 0, FT_SCORES) ????????

т.е. чтобы в коллекции первые доки были со значением где есть эти два слова (Республика и Беларусь), а все остальные доки с любым одним словом
 
S

Sandr

#2
Так ведь отвечали уже... Сортируй свою коллекцию потом так, как тебе хочется... :D
 

morpheus

скриптописец
07.08.2006
3 915
1
#3
Для: wowa
РУКАМИ, и вообще зачем спрашивать каждый раз одно и тоже! ?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#4
Сделать два поиска. Получить две коллекции.
 

wowa

Well-known member
01.02.2007
848
0
#5
Для: Medevic
Т.е. сделать сначала коллекцию где строка запроса содержит and, а потом OR ????
stSearch = "Беларусь* or Республика*"
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#6
Для: wowa
Ага. Во второй коллекции пропускать документы, которые есть в первой. :D
 
M

Mihal

#7
Абажите! Давайте подумаем. Для этого обратимся к документаци :D.

TERMWEIGHT
termweight

This gives importance, or "weight," to search words. You can use any value from 0 through 65537 to assign weight.
Example: 'TERMWEIGHT 25 photo or TERMWEIGHT 75 audio or TERMWEIGHT 50 video' finds documents containing at least one of the words. 'Audio' is most important, 'video' is next, and 'photo' is least important. Notes ranks results accordingly. You need an AND or OR between first TERMWEIGHT and subsequent ones.
А если построить запрос таким обпазом: TERMWEIGHT 50 "Республик* Беларус*" OR TERMWEIGHT 25 "Республик*" OR TERMWEIGHT 25 "Республик*"?
 
S

Sandr

#8
тада уже не TERMWEIGHT 50 "Республик* Беларус*" , а TERMWEIGHT 50 "Республика Беларусь"

А то он выберет тебе еще и "Рестпублика Боливия - это вам не Беларусь" :D
 

wowa

Well-known member
01.02.2007
848
0
#9
<!--QuoteBegin-Medevic+8:10:2007, 13:50 -->
<span class="vbquote">(Medevic @ 8:10:2007, 13:50 )</span><!--QuoteEBegin-->Ага. Во второй коллекции пропускать документы, которые есть в первой.
[snapback]80972" rel="nofollow" target="_blank[/snapback]​
[/quote]
А если в строке запроса 3 слова,.... то документы имеющие значения поля в одно и два совпадающих слова будут перемешиваться


<!--QuoteBegin-Mihal+8:10:2007, 13:51 -->
<span class="vbquote">(Mihal @ 8:10:2007, 13:51 )</span><!--QuoteEBegin-->А если построить запрос таким обпазом: TERMWEIGHT 50 "Республик* Беларус*" OR TERMWEIGHT 25 "Республик*" OR TERMWEIGHT 25 "Республик*"?
[snapback]80973" rel="nofollow" target="_blank[/snapback]​
[/quote]

Вот тут я что-то не совсем понял....
stSearch = "FIELD имя_поля = "TERMWEIGHT 50 "Республик* Беларус*" OR TERMWEIGHT 25 "Республик*" OR TERMWEIGHT 25 "Республик*"" ???
 
M

Mihal

#10
Сань, я ко всему отношусь как можно проще и не пложу лишних сущностей :p .
Если гаписано
чтобы в коллекции первые доки были со значением где есть эти два слова (Республика и Беларусь), а все остальные доки с любым одним словом
, значит так и делаем без всяких додумываний :D.


<!--QuoteBegin-wowa+8:10:2007, 14:04 -->
<span class="vbquote">(wowa @ 8:10:2007, 14:04 )</span><!--QuoteEBegin-->Вот тут я что-то не совсем понял....
stSearch = FIELD имя_поля = "TERMWEIGHT 50 "Республик* Беларус*" OR TERMWEIGHT 25 "Республик*" OR TERMWEIGHT 25 "Республик*"" ???
[snapback]80975" rel="nofollow" target="_blank[/snapback]​
[/quote]
Что надо-то? Найти доки со словами "республика" или "Белорусь"? Или найти доки, в которых в конкретных итемах есть "республика" и "Беларусь"? В описании проблемы ни слова нету о итемах или полях, между прочим.
 

wowa

Well-known member
01.02.2007
848
0
#11
<!--QuoteBegin-wowa+8:10:2007, 13:25 -->
<span class="vbquote">(wowa @ 8:10:2007, 13:25 )</span><!--QuoteEBegin-->Есть куча документов с полем , ..
в Этом поле много значений, "Республика
[snapback]80963" rel="nofollow" target="_blank[/snapback]​
[/quote]
По полю конкретному... Сорри за неполное высказывание проблемы..
 
M

Mihal

#12
(TERMWEIGHT 50 "Республик* Беларус*" AND [Memo]="Республик* Беларус*") OR (TERMWEIGHT 25 "Республик*" AND [Memo]="Республик*") OR (TERMWEIGHT 25 "Беларус*" AND [Memo]="Беларус*")

Попробуйте! А потом раскажите как получилось. Самомо интересно!
 

wowa

Well-known member
01.02.2007
848
0
#13
Для: Mihal
Круто, почти работает
"Беларусь " заносит вниз, а "Республика Беларусь" и "Республика" перемешивает ... где-то надо OR на AND заменить или наоборот


Для: Mihal
Большое спасибо, сам бы не дадумался
Для FTSearch


(TERMWEIGHT 50 ""Республика Беларусь"" AND FIELD имя_поля=""Республика Беларусь"") OR ( (TERMWEIGHT 25 ""Республика"" AND имя_поля=""Республика"") or (TERMWEIGHT 25 ""Беларусь"" AND FIELD имя_поля=""Беларусь"") )


Добавил скобочки и заработало (выделил какие)
 

wowa

Well-known member
01.02.2007
848
0
#14
хотя непонятно, то оно все нормально делает, то опять "Республика" и "Республика Беларусь" перемешивает... а "Беларусь" все нормально, - в конце
 
M

Mihal

#15
<!--QuoteBegin-wowa+8:10:2007, 15:47 -->
<span class="vbquote">(wowa @ 8:10:2007, 15:47 )</span><!--QuoteEBegin-->хотя непонятно, то оно все нормально делает, то опять "Республика" и "Республика Беларусь" перемешивает... а "Беларусь" все нормально, - в конце
[snapback]80990" rel="nofollow" target="_blank[/snapback]​
[/quote]

А если первым вхождением сделать так:
TERMWEIGHT 50 ""Республика Беларусь"" AND FIELD имя_поля=""Беларусь"" AND FIELD имя_поля=""Республика ""
?

Там же ещё всякие фази сёрчи ещё могут влиять.

Ой блин! На выходе ж получаем NotesDOcumentCollection :D. А там порядок документов определяется трансциндентным образом :p. Гы-гы. Хотя, опять же, в документации есть следующее:
The collection of documents that match the full-text query are sorted by relevance with highest relevance first. You can access the relevance score of each document in the collection using the FTSearchScore property in NotesDocument.
В общем, надо поэксперементировать. Убедится правильно ли сортирует по релевантности в принципе. Для этого запрос надо в поиск по вьюхе загнать. Потом переходить к колекции. на крайняк отсортировать собственоручно опираясь на FTSearchScore.

Дорогу осилит идущий!

P.S. Интуиция подсказывает, что достаточно будет разноса "Республика Беларусь" по двум разным условиям с AND.
P.P.S. А я родился в городе Калинковичи Гомельской области! ;)
 
M

Mihal

#16
Да! Вот эти дополнительный скопки меня смущают. Вряд ли в них дело.
 

wowa

Well-known member
01.02.2007
848
0
#17
Да, дело не в скобках.....Поизменял TERMWEIGHT , вроде как-то лучше стало работать

<!--QuoteBegin-Mihal+8:10:2007, 13:51 -->
<span class="vbquote">(Mihal @ 8:10:2007, 13:51 )</span><!--QuoteEBegin-->Для этого обратимся к документаци
[snapback]80973" rel="nofollow" target="_blank[/snapback]​
[/quote]
А что за документация?? В хелпе я что-то не нашел..
 
M

Mihal

#18
<!--QuoteBegin-wowa+8:10:2007, 19:26 -->
<span class="vbquote">(wowa @ 8:10:2007, 19:26 )</span><!--QuoteEBegin-->А что за документация?? В хелпе я что-то не нашел..
[snapback]81024" rel="nofollow" target="_blank[/snapback]​
[/quote]
Метод FTSearch класса NotesDatabase B)