在sqlite db中搜索具有不同编号的相同字符串

时间:2013-06-06 06:18:15

标签: vb.net sqlite

我有一个程序可以通过在数据库中搜索来快速翻译某些预定义句子。

一个例句是:

I like to eat 2 sandwitches every 3 days

问题是数据库可能包含句子:

I like to eat 3 sandwitches every 3 days

所以查询不会找到它。我面临的问题基本上是2:

1)我如何在sqlite数据库中搜索一个字符串,并确保它只是一个不同数字的同一个句子?

2)如何用正确的数字生成新句子?

它必须很快,因为要翻译的典型文件包含5000个句子,数据库包含10000或更多。

语言是VB.Net。所有进行搜索的代码都已经完成。仍然需要什么,我不知道从哪里开始是搜索具有不同数字的相同字符串的代码。通用代码没问题,我可以将其改编为我的代码。

由于

1 个答案:

答案 0 :(得分:1)

使用通配符进行搜索可以使用LIKE

进行
SELECT * FROM MyTable WHERE Text LIKE 'I like to eat % sandwitches every % days'

GLOB(区分大小写):

SELECT * FROM MyTable WHERE Text GLOB 'I like to eat * sandwitches every * days'

但是,此类搜索无法使用索引。

您可以使用full-text search表格。 MATCH不支持通配符,但您可以使用NEAR运算符搜索相邻的句子部分:

SELECT *
FROM MyTable
WHERE Text MATCH '"I like to eat" NEAR/1 "sandwitches every" NEAR/1 days'

NEAR不考虑顺序,所以这也会匹配像I like to eat days sandwitches every这样的句子;之后你必须检查返回的字符串。