我尝试在ssjs中创建一个搜索函数,如下所示。
notesdocumentcollection.ftsearch('"*' + searchword + '*"');我有一个文档,它的字段值是"Dr. Max Muster“。如果我搜索"dr“,我会得到一个结果。如果我搜索"dr. max“,我得不到结果。如果我去掉通配符并输入"dr. max“,我会得到一个结果。
我也是这样尝试的
notesdocumentcollection.ftsearch('*' + searchword + '*');有没有办法在搜索查询中得到带有通配符和特殊字符的结果?
附注:如果我在视图中的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发布于 2012-10-11 16:58:38
好的,首先,搜索引擎使用trigram系统。因此,搜索2个字符将不会像预期的那样工作。通配符可能会有所帮助,但不能保证它会得到一切。
那么,根据我对下一部分的理解,如果您在notes客户端的全文搜索栏中手动键入以下内容,它是否可以正常工作?(包含引号)
"*dr. max*"在Notes客户机中需要注意的一件事是,您可以激活两种不同的搜索模式(切换到basic preferences中)。Web查询和Notes查询。
默认情况下,web查询处于打开状态(IIRC),因此您可以像使用标准internet搜索引擎一样进行搜索。
如果您已经将其切换为Notes query,或者搜索以全大写的单词开始,那么它将使用Notes以前使用的语法。
因此,您可能会因此而看到客户端与XPages之间的差异。
要测试这一点,您可以按如下方式进行调试。在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.每一位的解释。
您发送到搜索引擎的
”(带引号)测试编译后的搜索字符串。
因此,生成这两个搜索结果,并发布它们,如果不是很明显,为什么它提到它不工作。
发布于 2012-10-11 16:32:56
FTSearch的文档说要用引号将单词和短语括起来。所以试试这个(将searchword变量用引号括起来--而不是通配符星号):
notesdocumentcollection.ftsearch('*"' + searchword + '"*');发布于 2012-10-11 16:47:07
Notes Fulltext查询语法比迪斯尼分时公寓更能保密(如果你曾经在迪士尼工作过,你就会明白这一点)。
官方语法指南在这里:http://www-10.lotus.com/ldd/dominowiki.nsf/dx/full-text-syntax
对我有很大帮助的是把searchsite.ntf拆开。在内部,FTSearch的所有概念都是以工作方式实现的(代码可以在任何时候击败文档)。
希望这能有所帮助
https://stackoverflow.com/questions/12834687
复制相似问题