首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >notesdocumentcollection.ftsearch和包含特殊字符的搜索查询

notesdocumentcollection.ftsearch和包含特殊字符的搜索查询
EN

Stack Overflow用户
提问于 2012-10-11 15:49:49
回答 3查看 2.1K关注 0票数 0

我尝试在ssjs中创建一个搜索函数,如下所示。

代码语言:javascript
运行
复制
notesdocumentcollection.ftsearch('"*' + searchword + '*"');

我有一个文档,它的字段值是"Dr. Max Muster“。如果我搜索"dr“,我会得到一个结果。如果我搜索"dr. max“,我得不到结果。如果我去掉通配符并输入"dr. max“,我会得到一个结果。

我也是这样尝试的

代码语言:javascript
运行
复制
notesdocumentcollection.ftsearch('*' + searchword + '*');

有没有办法在搜索查询中得到带有通配符和特殊字符的结果?

附注:如果我在视图中的notesclient中尝试这样做,它将会工作。

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

代码语言:javascript
运行
复制
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
EN

回答 3

Stack Overflow用户

发布于 2012-10-11 16:58:38

好的,首先,搜索引擎使用trigram系统。因此,搜索2个字符将不会像预期的那样工作。通配符可能会有所帮助,但不能保证它会得到一切。

那么,根据我对下一部分的理解,如果您在notes客户端的全文搜索栏中手动键入以下内容,它是否可以正常工作?(包含引号)

代码语言:javascript
运行
复制
"*dr. max*"

在Notes客户机中需要注意的一件事是,您可以激活两种不同的搜索模式(切换到basic preferences中)。Web查询和Notes查询。

默认情况下,web查询处于打开状态(IIRC),因此您可以像使用标准internet搜索引擎一样进行搜索。

如果您已经将其切换为Notes query,或者搜索以全大写的单词开始,那么它将使用Notes以前使用的语法。

因此,您可能会因此而看到客户端与XPages之间的差异。

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

代码语言:javascript
运行
复制
set config DEBUG_THREADID=1
set config CONSOLE_LOG_ENABLED=1
set config Debug_FTV_Search=1

现在在notes客户端和XPage中进行搜索。它将在Domino控制台上生成如下内容(注意:我在重要行的开头添加了数字)。

代码语言:javascript
运行
复制
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. 字符串。在本例中,它是“

”(带引号)测试编译后的搜索字符串。

  1. 它花了多长时间和找到的文档总数。
  2. 总计已丢弃,因为它已标记为已删除。
  3. 总计已放弃,因为您没有查看它们的权限。由于IDTable结果,
  4. 总计已丢弃。
  5. 总计已丢弃,因为它们不会出现在您正在搜索的视图中。
  6. 所用时间和剩余文档。如果发生任何错误,请执行

因此,生成这两个搜索结果,并发布它们,如果不是很明显,为什么它提到它不工作。

票数 1
EN

Stack Overflow用户

发布于 2012-10-11 16:32:56

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

代码语言:javascript
运行
复制
notesdocumentcollection.ftsearch('*"' + searchword + '"*');
票数 0
EN

Stack Overflow用户

发布于 2012-10-11 16:47:07

Notes Fulltext查询语法比迪斯尼分时公寓更能保密(如果你曾经在迪士尼工作过,你就会明白这一点)。

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

对我有很大帮助的是把searchsite.ntf拆开。在内部,FTSearch的所有概念都是以工作方式实现的(代码可以在任何时候击败文档)。

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12834687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档