notesdocumentcollection.ftsearch和带有特殊字符的搜索查询

时间:2012-10-11 07:49:49

标签: lotus-notes xpages xpages-ssjs

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

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

我有一个带有此字段值的文档“Max Muster博士”。 如果我搜索“dr”,我会得到一个结果。 如果我搜索“dr.max”我没有得到结果。 如果我删除通配符并输入“dr.max”,我将得到一个结果。

我也像这样尝试了

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

有没有办法在搜索查询中使用通配符和特殊字符获得结果?

P.S。 如果我在视图中的notesclient中尝试这个,它将起作用。

编辑: 对于这个查询“dr.ma”我从服务器获得了这个调试结果

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 个答案:

答案 0 :(得分:1)

确定首先搜索引擎使用trigram系统。因此搜索2个字符将无法按预期工作。外卡可能会有所帮助,但无法保证它能获得一切。

因此,如果您在Notes客户端的“全文搜索”栏中手动输入以下内容,我理解下一部分,它是否有效? (包括引用)

"*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. 如果发生任何错误。
  10. 所以生成这两个搜索结果并发布它们,如果它不明显为什么它提到它不起作用。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

Notes全文查询语法比迪斯尼时间共享公寓更加保密(如果你曾经在迪斯尼那里得到漂移)。

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

对我来说很有帮助的是将searchsite.ntf拆开并将其分开。在FTSearch的所有概念中都已经以一种可行的方式实现(代码可以随时用于文档)。

希望有所帮助