我有一个程序可以通过在数据库中搜索来快速翻译某些预定义句子。
一个例句是:
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。所有进行搜索的代码都已经完成。仍然需要什么,我不知道从哪里开始是搜索具有不同数字的相同字符串的代码。通用代码没问题,我可以将其改编为我的代码。
由于
答案 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
这样的句子;之后你必须检查返回的字符串。