Поиск в Xpage

susinmn

Well-known member
16.10.2007
529
3
#1
Поделитесь, как у вас организован поиск во вью по частичному совпадению.
Сделал поиск как здесь, а интересует именно поиск по частичному совпадению.

XPages View Control - Add Full Text Search
http://www-10.lotus.com/ldd/ddwiki.nsf/dx/...lTextSearch.htm

Заранее, спасибо.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#2
эммм.... а что мешает использовать в поиске условие @Contains?
 

susinmn

Well-known member
16.10.2007
529
3
#3
эммм.... а что мешает использовать в поиске условие @Contains?
мешает незнание, как использовать @Contains вот в этой конструкции(

var tmpArray = new Array("");
var cTerms = 0;
if (sessionScope.searchFIO != null & sessionScope.searchFIO != "") {
tmpArray[cTerms++] = "(Field FirstName = \""+sessionScope.searchFIO+"\")";
tmpArray[cTerms++] = "(Field LastName = \""+sessionScope.searchFIO+"\")";
tmpArray[cTerms++] = "(Field MiddleName = \""+sessionScope.searchFIO+"\")"
}
qstring = tmpArray.join(" Or ").trim();
return qstring
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#4
Тю....
Ну попробуй так

Код:
var tmpArray = new Array("");
var cTerms = 0;
if (sessionScope.searchFIO != null & sessionScope.searchFIO != "") {

tmpArray[cTerms++] = "(@Contains( FirstName; \""+sessionScope.searchFIO+"\")";
tmpArray[cTerms++] = "(@Contains( LastName; \""+sessionScope.searchFIO+"\")";
tmpArray[cTerms++] = "(@Contains( MiddleName; \""+sessionScope.searchFIO+"\")"
}
qstring = tmpArray.join(" Or ").trim();
return qstring
 

susinmn

Well-known member
16.10.2007
529
3
#5
Тю....
Ну попробуй так

Код:
var tmpArray = new Array("");
var cTerms = 0;
if (sessionScope.searchFIO != null & sessionScope.searchFIO != "") {

tmpArray[cTerms++] = "(@Contains( FirstName; \""+sessionScope.searchFIO+"\"))";
tmpArray[cTerms++] = "(@Contains( LastName; \""+sessionScope.searchFIO+"\"))";
tmpArray[cTerms++] = "(@Contains( MiddleName; \""+sessionScope.searchFIO+"\"))"
}
qstring = tmpArray.join(" Or ").trim();
return qstring
так пробовал, - *Веб-узел не может отобразить страницу*(
 

hosm

* so what *
18.05.2009
2 442
6
#8
а звездочка после значения, т.е. searchFIO+"\"*)", как в фт-поиске, в коде из Сообщение #3. так не покатит из-за кавычек?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#9
OKEN точно
Вот так будет работать. Перебор всех возможных совпадений по всем полям
Код:
var tmpArray = new Array("");
var cTerms = 0;
if (sessionScope.searchFIO != null & sessionScope.searchFIO != "") {
tmpArray[cTerms++] = '(Field FirstName = "*' + sessionScope.searchFIO + '*")';
tmpArray[cTerms++] = '(Field LastName = "*' + sessionScope.searchFIO + '*")';
tmpArray[cTerms++] = '(Field MiddleName = "*' + sessionScope.searchFIO + '*")';
}
qstring = tmpArray.join(" Or ").trim();
return qstring
Правда с ридерс и авторс полями не получилось
 

hosm

* so what *
18.05.2009
2 442
6
#10
Правда с ридерс и авторс полями не получилось
а что не получилось? что надо было получить, а что получили. ну, имена там измените, ессно, просто задачу опишите на примерах...
ридерс-авторс - там или по аббревиатурной или по канонической искать надо, я вот не помню. (что-то мне кажется, что по аббревиатурной форме искало фт-поиском по БД - это без икспейджей, если что).
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#12
OKEN
Да мне лично не надо :welcome: Это я пытаюсь помочь :)
Человеку надо написать поиск по совпадению :) Я вот и предложил вариант
Только такой поиск не работает с ридерс и авторс полями.
 

hosm

* so what *
18.05.2009
2 442
6
#13
Только такой поиск не работает с ридерс и авторс полями.
я просто не поняла эту фразу, что имелось ввиду:
он игнорирует права доступа к документам или просто не находит имена в ридерс-авторс-полях?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#14
Не находит.
Для ридерс-авторс полей нужен другой поиск