我尝试在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
答案 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 :(得分:0)
FTSearch的文档说明用引号括起单词和短语。所以试试这个(你将searchword变量括在引号中 - 而不是通配符星号):
notesdocumentcollection.ftsearch('*"' + searchword + '"*');
答案 2 :(得分:0)
Notes全文查询语法比迪斯尼时间共享公寓更加保密(如果你曾经在迪斯尼那里得到漂移)。
官方语法指南位于:http://www-10.lotus.com/ldd/dominowiki.nsf/dx/full-text-syntax
对我来说很有帮助的是将searchsite.ntf拆开并将其分开。在FTSearch的所有概念中都已经以一种可行的方式实现(代码可以随时用于文档)。
希望有所帮助