Revision 5058
Added by ben leinfelder over 14 years ago
search.js | ||
---|---|---|
397 | 397 |
keys are search values |
398 | 398 |
* values are pathexprs |
399 | 399 |
**/ |
400 |
function generateSearchString(searchTerms, operator, searchAssessments, searchAssessmentItems) { |
|
400 |
function generateSearchString( |
|
401 |
searchTerms, |
|
402 |
assessmentItemIds, |
|
403 |
operator, |
|
404 |
searchAssessments, |
|
405 |
searchAssessmentItems) { |
|
401 | 406 |
var queryString = |
402 | 407 |
"<pathquery version=\"1.2\">" |
403 | 408 |
+"<querytitle>Web-Search</querytitle>"; |
... | ... | |
442 | 447 |
+"<returnfield>response_label/material/mattext</returnfield>"; |
443 | 448 |
} |
444 | 449 |
|
445 |
queryString += |
|
446 |
"<querygroup operator=\"" + operator + "\">"; |
|
447 |
|
|
450 |
// a query group for search terms |
|
451 |
var termQueryString = ""; |
|
452 |
termQueryString += |
|
453 |
"<querygroup operator=\"" + operator + "\">"; |
|
448 | 454 |
for (var i in searchTerms) { |
449 | 455 |
var key = i; |
450 | 456 |
var value = searchTerms[i]; |
451 | 457 |
//only if we have a value |
452 | 458 |
if (value.length > 0) { |
453 |
queryString +=
|
|
459 |
termQueryString +=
|
|
454 | 460 |
"<queryterm searchmode=\"contains\" casesensitive=\"false\">"; |
455 | 461 |
if (key != "anyValue") { |
456 |
queryString += "<pathexpr>" + key + "</pathexpr>";
|
|
462 |
termQueryString += "<pathexpr>" + key + "</pathexpr>";
|
|
457 | 463 |
} |
458 |
queryString += "<value>" + value + "</value>";
|
|
459 |
queryString +="</queryterm>";
|
|
464 |
termQueryString += "<value>" + value + "</value>";
|
|
465 |
termQueryString +="</queryterm>";
|
|
460 | 466 |
} |
461 | 467 |
} |
462 |
|
|
468 |
termQueryString += "</querygroup>"; |
|
469 |
|
|
470 |
// querygroup for assessmentItemIds |
|
471 |
var itemQueryString = ""; |
|
472 |
if (assessmentItemIds) { |
|
473 |
//the pathexpr |
|
474 |
var pathexpr = "assessmentItems/assessmentItem/assessmentItemId"; |
|
475 |
// a query group for search terms |
|
476 |
itemQueryString += |
|
477 |
"<querygroup operator=\"" + "UNION" + "\">"; |
|
478 |
for (var i in assessmentItemIds) { |
|
479 |
var itemId = assessmentItemIds[i]; |
|
480 |
//only if we have a value |
|
481 |
if (itemId.length > 0) { |
|
482 |
itemQueryString += |
|
483 |
"<queryterm searchmode=\"contains\" casesensitive=\"false\">"; |
|
484 |
if (key != "anyValue") { |
|
485 |
itemQueryString += "<pathexpr>" + pathexpr + "</pathexpr>"; |
|
486 |
} |
|
487 |
itemQueryString += "<value>" + itemId + "</value>"; |
|
488 |
itemQueryString +="</queryterm>"; |
|
489 |
} |
|
490 |
} |
|
491 |
itemQueryString += "</querygroup>"; |
|
492 |
} |
|
493 |
|
|
494 |
//combine the various conditions |
|
463 | 495 |
queryString += |
464 |
"</querygroup>" |
|
465 |
+"</pathquery>"; |
|
496 |
"<querygroup operator=\"" + "UNION" + "\">"; |
|
497 |
queryString += termQueryString; |
|
498 |
queryString += itemQueryString; |
|
499 |
queryString += "</querygroup>"; |
|
466 | 500 |
|
501 |
//end the pathquery |
|
502 |
queryString += "</pathquery>"; |
|
503 |
|
|
467 | 504 |
return queryString; |
468 | 505 |
|
469 | 506 |
} |
... | ... | |
476 | 513 |
|
477 | 514 |
+"<returndoctype>edml://ecoinformatics.org/edml</returndoctype>" |
478 | 515 |
|
479 |
+"<returnfield>assessment/title</returnfield>"
|
|
480 |
+"<returnfield>assessment/@id</returnfield>"
|
|
481 |
+"<returnfield>assessment/duration</returnfield>"
|
|
482 |
+"<returnfield>dataset/dataTable/entityName</returnfield>"
|
|
483 |
+"<returnfield>lom/general/title/string</returnfield>"
|
|
484 |
+"<returnfield>lom/general/keyword/string</returnfield>"
|
|
485 |
+"<returnfield>individualName/surName</returnfield>"
|
|
486 |
+"<returnfield>organizationName</returnfield>"
|
|
516 |
+"<returnfield>assessment/duration</returnfield>"
|
|
517 |
+"<returnfield>assessment/title</returnfield>"
|
|
518 |
+"<returnfield>assessment/@id</returnfield>"
|
|
519 |
+"<returnfield>dataset/dataTable/entityName</returnfield>" |
|
520 |
+"<returnfield>lom/general/title/string</returnfield>" |
|
521 |
+"<returnfield>lom/general/keyword/string</returnfield>" |
|
522 |
+"<returnfield>individualName/surName</returnfield>" |
|
523 |
+"<returnfield>organizationName</returnfield>" |
|
487 | 524 |
|
488 |
+"<returnfield>assessmentItems/assessmentItem/assessmentItemId</returnfield>";
|
|
525 |
+"<returnfield>assessmentItems/assessmentItem/assessmentItemId</returnfield>"; |
|
489 | 526 |
|
490 | 527 |
if (assessmentItemId.length > 0) { |
491 | 528 |
query += "<querygroup operator='UNION'>"; |
... | ... | |
550 | 587 |
return query; |
551 | 588 |
} |
552 | 589 |
|
553 |
function callAjax(metacatURL, myQuery, qfmt, divId) { |
|
590 |
function callAjax(metacatURL, myQuery, qfmt, divId, callback) {
|
|
554 | 591 |
|
555 | 592 |
//alert("calling ajax: " + metacatURL); |
556 | 593 |
//alert("myQuery: " + myQuery); |
... | ... | |
562 | 599 |
{ method: 'post', |
563 | 600 |
parameters: { action: 'squery', qformat: qfmt, query: myQuery}, |
564 | 601 |
evalScripts: true, |
565 |
//onSuccess: function(transport) {alert('success: ' + transport.status);},
|
|
602 |
onComplete: callback,
|
|
566 | 603 |
onFailure: function(transport) {alert('failure making ajax call');} |
567 | 604 |
}); |
568 | 605 |
|
Also available in: Unified diff
search across items as well as assessments
http://bugzilla.ecoinformatics.org/show_bug.cgi?id=4387
note: you can switch this feature off using the checkbox provided in the search form. the search can be slow otherwise