【发布时间】:2012-11-20 08:21:16
【问题描述】:
我们将 NexusDB 用于小型数据库。我们有一个定义了 FulltextIndex 的表。 索引配置有以下选项:
- 字符分隔符
- ccPunctuationDash
- ccPunctuationOther
用户在编辑框中输入搜索文本,然后使用以下 WHERE 子句构造 SQL 语句(当然,%s 替换为 Editbox.text):
WHERE CONTAINS(FullIdx, ''%s'')
当用户在编辑框中输入多个单词时,这会出错,因为这两个单独的单词应该嵌入到 WHERE 子句中,如下所示:
WHERE CONTAINS(FullIdx, 'word1' and 'word2')
所以我必须解析文本框的值,扫描它的空格并在这些点分割文本。这让我想知道是否可以解析全文索引的每个设置的搜索文本,使用全文索引的实际定义来创建正确的 where 子句。
因此,如果在 FulltextIndex 定义中启用了 ccPunctuationDash,则搜索文本也会在“-”上拆分。
如果你想起来,这和创建索引并标记所有字符串时的过程完全相同......
我的问题:根据 FUlltextIndex 的设置标记搜索字符串的最简单方法是什么?
【问题讨论】:
-
NexusDB 对其新闻组的回应:在源代码中搜索 :-(
标签: delphi full-text-indexing nexusdb