notesdocumentcollection.ftsearch и поисковый запрос со специальными символами

Я пытаюсь сделать функцию поиска в ssjs, которая выглядит следующим образом.

notesdocumentcollection.ftsearch('"*' + searchword + '*"');

У меня есть документ с этим значением поля "Доктор Макс Мустер". если я ищу "доктор", я получаю результат. если я ищу "доктор Макс", я не получаю результат. если я удалю шаблон и наберу "dr. max", я получу результат.

я тоже попробовал вот так

notesdocumentcollection.ftsearch('*' + searchword + '*');

Есть ли способ получить результат с подстановочными знаками и специальными символами в поисковом запросе?

PS Если я попробую это в notesclient в представлении, это будет работать.

РЕДАКТИРОВАТЬ: для этого запроса "др. Ма" я получил эти результаты отладки с сервера

IN FTGSearch option = 0x400089 
[12CC:000A-1A30] Query: dr. ma 
[12CC:000A-1A30] Engine Query: ("drma") 
[12CC:000A-1A30] OUT FTGSearch error = F22 
[12CC:000A-1A30] FTGSearch: found=0, returne 
[12CC:000A-1A30] IN FTGSearch option = 0x40008C 
[12CC:000A-1A30] Query: *"dr**ma"* 
[12CC:000A-1A30] Engine Query: ("*dr**ma*") 
[12CC:000A-1A30] OUT FTGSearch error = F22 
[12CC:000A-1A30] FTGSearch: found=0, returned=0, start=0, count=0, limit=0

3 ответа

Хорошо, сначала поисковая система использует систему триграмм. Таким образом, поиск 2 символов не будет работать, как ожидалось. Дикие карты могут помочь, но нет никаких гарантий, что они получат все.

Итак, насколько я понимаю следующую часть, если вы вручную введете следующую строку в строку Полнотекстового поиска в клиенте заметок, и она работает? (цитаты включены)

"*dr. max*"

В клиенте Notes следует помнить одну вещь: вы можете активировать два разных режима поиска (переключитесь в основные настройки). Веб-запрос и запрос Notes.

По умолчанию веб-запрос включен (IIRC), поэтому вы выполняете поиск так же, как если бы вы использовали стандартные поисковые системы Интернета.

Если вы переключили его на запрос Notes или поиск начинается со слова с заглавными буквами, он использует синтаксис, который Notes использовал ранее.

Таким образом, возможно, вы видите различия между клиентом и XPages из-за этого.

Чтобы проверить это, вы можете отладить следующим образом. На консоли сервера Domino введите следующее.

set config DEBUG_THREADID=1
set config CONSOLE_LOG_ENABLED=1
set config Debug_FTV_Search=1

Теперь сделайте поиск в клиенте заметок и XPage. Это сгенерирует что-то вроде следующего на консоли Domino (примечание: я добавил цифры в начале для важных строк).

IN FTGSearch
[07FC:0048-0A94] option = 0x400219
1. [07FC:0048-0A94] Query: ("*test*")
2. [07FC:0048-0A94] Engine Query: ("*test*"%STEM)
3. [07FC:0048-0A94] GTR query performed in 6 ms. 5 documents found
4. [07FC:0048-0A94] 0 documents disualified by deletion
5. [07FC:0048-0A94] 0 documents disqualified by ACL
6. [07FC:0048-0A94] 0 documents disqualified by IDTable
7. [07FC:0048-0A94] 0 documents disqualified by NIF
8. [07FC:0048-0A94] Results marshalled in 3 ms. 5 documents left
9. [07FC:0048-0A94]  OUT FTGSearch error = 0
[07FC:0048-0A94] FTGSearch: found=5, returned=5, start=0, count=0, limit=0
[07FC:0048-0A94] Total search time 10 ms.

Объяснение каждого бита.

  1. Строка, которую вы отправили в поисковик. В данном случае это был "тест" (с кавычками)
  2. Скомпилированная строка поиска.
  3. Сколько времени прошло и сколько документов найдено.
  4. Всего удалено, поскольку оно было помечено как удаленное.
  5. Всего удалено, так как у вас не было прав на их просмотр.
  6. Всего отброшено из-за результатов IDTable.
  7. Всего отклонено, поскольку они не будут отображаться в представлении, из которого вы выполняете поиск.
  8. Время заняло и оставшиеся документы.
  9. Если какие-либо ошибки произошли.

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

Синтаксис полнотекстового запроса Notes лучше хранится в тайне, чем квартиры в Disney Time (если вы когда-либо были в Disney, вы получаете дрейф).

Официальное руководство по синтаксису находится здесь: http://www-10.lotus.com/ldd/dominowiki.nsf/dx/full-text-syntax

Что мне очень помогло, так это взять searchsite.ntf и разорвать его на части. Внутри все концепции FTSearch были реализованы в рабочем стиле (работающий код превосходит документацию в любое время).

надеюсь, это поможет

Документация для FTSearch гласит заключать слова и фразы в кавычки. Так что попробуйте это (где вы заключаете переменную searchword в кавычки, а не подстановочный знак):

notesdocumentcollection.ftsearch('*"' + searchword + '"*');
Другие вопросы по тегам