Как использовать подстановочные знаки в поиске FT - PullRequest
0 голосов
/ 02 марта 2012

У меня есть следующее:

tmpArray[cTerms++] = "[sclenka] CONTAINS \"*" + sessionScope.sclenka +"*\"";

(С помощью Пер Хенрик Лаустен )

Что должно привести к: "*term*" Но это не так, я получаю это вместо: "term"

Итак, мой вопрос: как использовать полнотекстовый поиск по шаблону?

Спасибо!

Ответы [ 6 ]

1 голос
/ 02 марта 2012

Если ваша строка верна и вы не получаете результатов, протестируйте эту же строку в поиске FTI клиента Notes.

Вы также можете использовать следующую отладку на сервере.

DEBUG_FTV_SEARCH=1

Затем проверьте вывод на консоли домино при выполнении поиска.

1 голос
/ 02 марта 2012

Если вы хотите использовать поиск с подстановочными знаками, сгенерируйте следующую строку запроса:

tmpArray[cTerms++] = "[sclenka] = \"*" + sessionScope.sclenka +"*\"";

Это должно сгенерировать поиск по "*search query*".

В общем, этохороший способ выполнения поиска, поскольку пользователь, вероятно, ожидает, что ваш поиск будет работать таким образом.

Источник: http://www -10.lotus.com / ldd / ddwiki.nsf / dx / Searching_for_Documents # Full-text + Поиск

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

@ GKIDD

Я только что проверил это на своем собственном сайте. У меня есть настройка NCTSearch. Я принимаю поисковый запрос из Интернета и запускаю database.ftsearch () как часть своей работы из lotuscript.

Я выполнил поиск по «данным *» и получил по крайней мере столько же результатов, сколько при поиске по «базе данных».

Исходя из этого, я думаю, что происходит что-то еще.

Из моего предыдущего комментария к другому ответу попробуйте следующее: Создайте другого агента, который ПРОСТО выполняет поиск. Пусть он схватит поисковый термин из контекста агента, как если бы он был docid. Вызовите агента от первого агента, используя «agent.runonserver (searchterm)», посмотрите, сможете ли вы его обмануть

Андрей, я получаю результаты с анонимным пользователем, но не с подстановочным знаком. Здесь goo.gl/YVtXm в первой строке написано, что СОДЕРЖИТ или содержит или = не работает при поиске в Интернете.

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

leyrer, возможно ли - просто возможно - что вы делаете это в браузере и ваша сессия не аутентифицирована? Если это так, вы можете выполнять поиск в базе данных как «анонимный», тогда как при тестировании в браузере вы ищете «leyrer».

Это всего лишь мысль - но я привык видеть, что все время, когда люди начинают использовать мои инструменты поиска NCT. Они клялись, что не получают результатов, и когда я копал, я всегда обнаруживал, что они используют браузер как анонимный, а не как зарегистрированный сеанс.

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

Так что, если я вас понимаю, результатом является экранированная форма поискового запроса, в которой удалены звездочки?

Не могли бы вы использовать конструкцию:

tmpArray [cTerms ++] = "[sclenka] СОДЕРЖИТ \" "+ String.fromCharCode (42) + sessionScope.sclenka + String.fromCharCode (42) +" \ "";

Как минимум, чего следует избегать?

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

Я думаю, что вы пропустили немного экранирующих символов в строке, которую вы генерируете.

tmpArray [cTerms ++] = "[sclenka] СОДЕРЖИТ \" "+ sessionScope.sclenka +" \ "";

...