0

我尝试在 ssjs 中创建一个看起来像这样的搜索功能。

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

我有一个此字段值为“Dr. Max Muster”的文档。如果我搜索“博士”,我会得到一个结果。如果我搜索“dr. max”,我没有得到结果。如果我删除通配符并输入“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
4

3 回答 3

1

好的,首先搜索引擎使用三元组系统。因此搜索 2 个字符将无法按预期工作。外卡可能会有所帮助,但不能保证它会得到一切。

因此,据我了解,如果您在笔记客户端的全文搜索栏中手动输入以下内容并且它可以工作?(包括报价)

"*dr. max*"

在 Notes 客户端中需要注意的一件事是,您可以激活两种不同的搜索模式(切换基本首选项)。Web 查询和 Notes 查询。

默认情况下,网络查询处于启用状态 (IIRC),因此您可以像使用标准互联网搜索引擎一样进行搜索。

如果您已将其切换到 Notes 查询,或者搜索以全大写单词开头,则它使用 Notes 之前使用的语法。

因此,您可能会因此看到客户端与 XPage 的差异。

要对此进行测试,您可以按如下方式进行调试。在 Domino 服务器控制台上键入以下内容。

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

现在在notes 客户端和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. 如果发生任何错误。

因此,如果不清楚为什么提到它不起作用,请生成这两个搜索结果并发布它们。

于 2012-10-11T08:58:38.390 回答
0

FTSearch 的文档说用引号将单词和短语括起来。所以试试这个(你把 searchword 变量括在引号中 - 而不是通配符星号):

notesdocumentcollection.ftsearch('*"' + searchword + '"*');
于 2012-10-11T08:32:56.413 回答
0

Notes全文查询语法比迪士尼时间共享公寓更保密(如果你曾经在迪士尼,你就会明白)。

官方语法指南在这里:http ://www-10.lotus.com/ldd/dominowiki.nsf/dx/full-text-syntax

对我帮助很大的是把 searchsite.ntf 拆开。在 FTSearch 的所有概念中,都以一种有效的方式实现了(任何时候都能运行的代码胜过文档)。

希望有帮助

于 2012-10-11T08:47:07.410 回答