您好我的database.ftSearch存在很大问题。
背景 该数据库包含大约5k Dokuments,仅文本字段。其中一个领域叫做ArtId。对于搜索我使用更长的查询,目标是不同的字段,但我跟踪到这个问题:
问题:
当我搜索像12345这样的ArtId时,我将搜索转换为[ArtId]="*12345*"
,允许用户找到01234567,它的工作非常好。但问题是我也有dokuments,其中ArtId看起来像这01.123.45。如果我尝试搜索它,它也会转换为[ArtId]="*01.123.45*"
并返回......没有因为。 *似乎没有合作。
如果我在数据库中使用搜索,我会得到相同的结果。 有没有逃脱。在" 号码"内。我已经尝试用点替换点?或其他查询参数,但没有任何帮助。
我知道这是一个更多的笔记问题,然后是一个xpages问题,但是当我从一个xPage maby中调用它时,有一个早期的解决方法来捕获。在我的XPage代码中输入并转换它。
答案 0 :(得分:1)
我做了类似Ken的建议,因为我需要搜索包含完全限定名称列表的多值字段,并且搜索fieldName包含CN = Some Name / O = SomeOrg总是失败,但如果我创建了一个计算机字段并将名称转换为缩写字段名包含Some Name / SomeOrg正常工作。 FTSearch很不错,但它对某些格式问题非常敏感。所以我认为你的问题可以通过创建一个计算字段来解决所有数据的相同格式。
答案 1 :(得分:0)
一个建议 - 您可以创建一个计算字段,从ArtId中删除点,然后对该项目进行通配符搜索。
答案 2 :(得分:0)
在FTSearch中,点字符(可能)没有被索引,因为FTSearch是面向字的,并且点在正常文本解析中被视为字分隔符。
您可以使用@Contains(fieldname;"12345" : "123.45")
进行非FT搜索。这将比FTsearch慢,但只有3000个文档,性能可能是可以接受的。
或者,我相信您可以在FTSearch中使用“NEAR”关键字,就像在"01 NEAR 123 NEAR 45"
中一样,但是您必须在结果集上执行另一次代码传递,以确保您没有获得来自ID的误报,其中段以不同的顺序出现。
答案 3 :(得分:0)
好的,我发现了这个问题...... 在复制数据库并重建索引3次后,它现在可以正常工作......似乎数据库中的索引只是被破坏了。
我不知道为什么当我删除并创建一个新索引时它第一次没有工作但现在它可以工作。