Создание Xpage для поиска проблемы - PullRequest
1 голос
/ 02 марта 2012

У меня большие проблемы с этой поисковой страницей, которую я создаю.

У меня есть представление с документами с полями, подобными следующим: foreignCompany, ourCompany, dateStarted, dateEnded, countryOfApplication.Пользователь вводит следующие параметры для поиска: название компании (foreignCompany), дата (назовем это searchDate) и countryOfApplication.

Результаты показывают компании, которые имеют действующие контракты между dateStarted - searchDate - dateEnded.Я частично достиг этого пока.

Проблема в том, что если, например, название компании: Kompanija, но пользователь вводит: Komp или Kom или Kompanij или что-то еще, но не Kompanija, поиск не даст результатов !?Только если введено все слово, это когда возвращаются результаты.

Я даже последовал примеру справки IBM: Как создать Xpage для поиска, то же самое происходит и с этим.

Я был бы очень признателен за любую помощь, оказанную здесь, так как уже довольно давно бью головой об стену.Спасибо!

Ответы [ 2 ]

5 голосов
/ 02 марта 2012

Если вы используете свойство поиска в источнике данных представления, имейте в виду, что свойство поиска использует «язык» полнотекстового поиска Notes для поискового запроса - например, [Publish] = "1" AND [Status] = "Завершено".

Это будет искать части названия компании, используя ваш пример:

[foreignCompany] CONTAINS Komp

Так что вам, вероятно, нужно изменить поисковый запрос.

0 голосов
/ 02 марта 2012

Если вы используете запрос типа

Query = (FIELD foreignCompany = "kompan") И (FIELD countryOfApplication = "Македонија") И (FIELD countryOfApplication2 = "Србија") *

очевидно, что результаты возвращают только иностранную компанию, полное имя которой - kompan.Вы должны использовать что-то вроде этого (используйте содержит ..)

Запрос = (FIELD [foreignCompany] содержит "kompan") И (FIELD [countryOfApplication] СОДЕРЖИТ "Македонија") И (FIELD [countryOfApplication2]= "Србија")

Как этого добиться @runtime.Вы можете использовать функцию ssjs «generateQuery ()», где вы передаете искомую строку, и она генерирует правильный запрос.Что-то вроде

function generateQuery(strforeignCompany, strcountryOfApplication , strcountryOfApplication2){
    var strQuery = new java.lang.StringBuffer();

    if(strForeignCompany != null && !"".equals(strForeignCompany)){
 strQuery.append("[ForeignCompany] contains");
 strQuery.append(strForeignCompany);
    }


    if(strcountryOfApplication != null && !"".equals(strcountryOfApplication )){
 strQuery.append("[countryOfApplication ] contains");
 strQuery.append(strcountryOfApplication );
    }


    if(strcountryOfApplication2!= null && !"".equals(strcountryOfApplication2)){
 strQuery.append("[countryOfApplication2] contains");
 strQuery.append(strcountryOfApplication2);
    }
  return strQuery.toString();
 }
...