2009-08-10 38 views
3

这是我正在尝试做的。SQLite查询 - 需要帮助全文搜索

用户(a): 在两个字段(描述-1)和(描述-2)中输入数据。

用户(b)在相反的字段中输入类似的数据。

用户(a)或(b)在两个字段上搜索都会找到匹配项。

一个很好的比喻就是约会搜索。用户(a)输入他们自己的描述和他们正在寻找的匹配,并且用户(b)输入他们自己和他们正在寻找的匹配的描述,并且两者都能够进行搜索并找到匹配。

所以在伪查询英语...

从数据选择名称,其中我=“目标”和目标=“我”

美中不足的是,一些字在该领域将匹配, 但不是所有的。

+0

是自由表单中输入的信息,或者是重新构建它的任何结构? – 2009-08-11 00:02:44

+0

该数据是由用户自由输入的。如果数据是结构化的,是否有其他选择? – Jordan 2009-08-11 00:05:40

+0

@Jordan好吧,任何结构都可以让它更容易,几乎可以根据定义。 – 2009-08-11 01:18:02

回答

5

无论什么技术,这种类型的匹配都很难。你可能已经咬掉了超过你可以咀嚼的东西。

我向你推荐的是阅读PostgreSQL中的​​数据类型。
PostgreSQL为全文搜索提供了一个灵活而强大的解决方案,它可以满足您的需求,而SQLite可能不会。

使用PostgreSQL tsquerytsvectordata types,您可以将一个用户的描述转换为查询其他用户描述的表单。 tsquery和tsvector都可以动态生成或保存在数据库列中并建立索引。

如果您仍然需要使用SQLite,您需要了解各种FTS虚拟表类型。这些都是实验性的,默认情况下不启用。所以你需要重新编译SQLite,启用FTS1,FTS2或FTS3。

这些功能的文档相当稀少。这里的一切,我发现: