【问题标题】:Lotus FTSearch wildcard with Numbers and Dot's带有数字和点的 Lotus FTSearch 通配符
【发布时间】:2015-01-29 16:50:24
【问题描述】:

您好,我的 database.ftSearch 有一个大问题。

背景: 该数据库包含大约 5k 个文档,其中只有 文本字段。其中一个字段称为 ArtId。对于搜索,我使用更长的查询来定位不同的字段,但我将问题归结为:

问题: 当我搜索像 12345 这样的 ArtId 时,我将搜索转换为 [ArtId]="*12345*",允许用户也找到 01234567,这非常好用。但问题是我也有 ArtId 看起来像这样 01.123.45 的文档。如果我尝试搜索它,它也会被转换为[ArtId]="*01.123.45*" 并且返回......什么都没有,因为。和 * 似乎不能一起工作。

如果我在数据库中使用搜索,我会得到相同的结果。 有没有逃生之道。在“数字”中。我已经尝试将点替换为 ?或其他查询参数,但没有任何帮助。

我知道这更像是一个笔记问题,而不是一个 xpages 问题,但是正如我从 xPage 中所说的那样,可能有一个更早的解决方法来捕获 .输入并在我的 XPages 代码中进行转换。

【问题讨论】:

    标签: xpages lotus-notes lotus-domino


    【解决方案1】:

    我做了类似于 Ken 的建议的事情,因为我需要搜索一个包含完全限定名称列表的多值字段,并且搜索 fieldName contains CN=Some Name/O=SomeOrg 总是失败,但如果我创建一个计算字段并将名称转换为缩写字段名称包含 Some Name/SomeOrg 可以正常工作。 FTSearch 很好,但它对某些格式问题非常敏感。所以我认为你的问题可以通过创建一个计算域来解决,将所有数据都变成相同的格式。

    【讨论】:

    • 我有点困惑笔记如何处理索引/搜索,因为我认为我在文本字段 [ArtId] 中搜索字符串 "*1.234.4*"。但是,点接缝将我的搜索请求转换为数字键,因为如果我搜索 "*hallo.world*" 我会得到结果......所以我已经有一个很好的文本字段,其中包含所需的数据但我找不到它 =)
    【解决方案2】:

    一个建议 - 您可以创建一个计算字段,从 ArtId 中删除点,然后在该项目上执行通配符搜索。

    【讨论】:

    • 我已经这么认为了,但是如果我删除点,我就不会得到正确的搜索结果,因为 01.234.56 != 0123456... 如果我使用“01.234.56”,我只会得到正确的文件而不是"*01.234.56*"。但正如我所说,另一方面,如果我搜索 1234 并且我想找到 1234567,"*1234*" 工作得很好。
    【解决方案3】:

    在 FTSearch 中,点字符(可能)没有被索引,因为 FTSearch 是面向单词的,并且在普通文本解析中点被视为单词分隔符。

    您可以对@Contains(fieldname;"12345" : "123.45") 使用非FT 搜索。这将比 FTsearch 慢,但只有 3000 个文档,性能可能是可以接受的。

    或者,我相信您可以在 FTSearch 中使用“NEAR”关键字,如 "01 NEAR 123 NEAR 45",但您必须在结果集上再次输入代码,以确保您不会得到误报来自段以不同顺序出现的 id。

    【讨论】:

    • 但是如果点没有被索引,为什么我会得到“1.234.56”的结果,而"*1.234.5*" 没有结果我认为只要我使用笔记,便可以将搜索查询转换为数字点和通配符不适用于数字。
    【解决方案4】:

    好的,我找到了问题... 在复制数据库并重建索引 3 次后,它现在可以工作了……似乎数据库中的索引被破坏了。

    我不知道为什么我第一次删除并创建新索引时它不起作用,但现在它起作用了。

    【讨论】:

      猜你喜欢
      • 2013-04-18
      • 2013-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多