Создание X-страницы для поиска

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

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

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

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

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

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


person gkidd    schedule 02.03.2012    source источник
comment
По какому запросу вы ищете компанию Komp?   -  person jjtbsomhorst    schedule 02.03.2012
comment
Дополнительно к этому: как вы ищете? Используя стандартный database.search или метод FTsearch для представления?   -  person Mark Leusink    schedule 02.03.2012
comment
Можете ли вы отправить запрос, который у вас есть?   -  person Serdar Basegmez    schedule 02.03.2012
comment
это запрос: Query = (FIELD foreignCompany = kompan) AND (FIELD countryOfApplication = Македонија) AND (FIELD countryOfApplication2 = Србија) Я не знаю, как искать с параметрами даты.   -  person gkidd    schedule 02.03.2012


Ответы (2)


Если вы используете свойство поиска в источнике данных представления, имейте в виду, что свойство поиска использует «язык» полнотекстового поиска Notes для поискового запроса - например, [Опубликовать] = "1" И [Статус] = "Готово".

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

[foreignCompany] CONTAINS Komp

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

person Per Henrik Lausten    schedule 02.03.2012
comment
Как вы создаете поисковый запрос и передаете его свойству search в источнике данных представления в вашем текущем решении? Пожалуйста, обновите свой вопрос с помощью примера кода - person Per Henrik Lausten; 02.03.2012
comment
У меня возникли проблемы с вставкой кода сюда, поэтому вот ссылка на Pastebin pastebin.com/3gyR9y5E Спасибо за помощь! Я очень ценю это... - person gkidd; 02.03.2012
comment
тьфу ... Я получаю сообщение об ошибке: Ошибка заметок: запрос непонятен Если это важно, мне нужно искать с кириллическими значениями. - person gkidd; 02.03.2012
comment
Взгляните на sessionScope.queryString и посмотрите, как выглядит поисковый запрос при генерации - person Per Henrik Lausten; 02.03.2012
comment
Вот результат: [foreignCompany] CONTAINS "kompan") AND [countryOfApplication] CONTAINS "Македонија") AND [countryOfApplication2] CONTAINS "Србија") AND [ourCompany] CONTAINS "Име на Компанијата" - person gkidd; 02.03.2012
comment
давайте продолжим обсуждение в чате - person Per Henrik Lausten; 02.03.2012
comment
Это забавно, теперь вам нужно набрать хотя бы четыре буквы слова. - person gkidd; 02.03.2012

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

Запрос = (FIELD foreignCompany = "kompan") AND (FIELD countryOfApplication = "Македонија") AND (FIELD countryOfApplication2 = "Србија")

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

Query = (FIELD [foreignCompany] содержит "kompan") AND (FIELD [countryOfApplication] CONTAINS "Македонија") AND (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();
 }
person jjtbsomhorst    schedule 02.03.2012
comment
Я исправил код, но это должен был быть образец кода, а не производственный код;) - person jjtbsomhorst; 02.03.2012