2014-10-09 89 views
1

我在我的brand_names表中有brand_name列,我的product_names表中有product_name列。SQLite FTS3 - 全文搜索多个表

目前,我有两个单独的选择(一个在brand_names.brand_name和一个在product_names.product_name),我使用一个联合或OR两个结果集在一起。 SomeBrandNameSomeProductName - - 不要所有出现在brand_names.brand_name和但是,当搜索是“SomeBrandName一些产品名称”,尽管这样的产品存在,我的SQL返回零的结果(这是因为条款进行他们没有全部出现在product_names.product_name)。

所以我需要帮助制定出的SQLite/FTS3等价的类似...

SELECT (brand_names.brand_name || ' ' || product_names.product_name) AS brand_and_product_name FROM brand_names, product_names WHERE brand_and_product_name MATCH 'SomeBrandName Some Product Name'

什么是实际的SQLite/SQL FTS3,我需要做到这一点?

在研究方面,我已阅读SQLite FTS3 guide,但它没有提到多个表格。

我也看到一个similar question这是一个更先进的,所以可能是矫枉过正的简单搜索,我想在这里实现。

回答

0

FTS搜索只能在FTS索引中完成。

如果您想获得“品牌产品”的结果,您必须创建一个FTS表,其中包含单个行中的这些词。 (为了减少存储空间,请尝试在视图上使用external content table)。

+0

感谢您的支持!现在我已将brand_name列转换为与product_name列相同的表格。你知道我怎么能对两列做FTS查询吗? (在这里找不到任何有用的东西 - http://www.sqlite.org/fts3.html。 – 2014-12-24 17:04:22

+0

你链接的Thema文档说MATCH可以取表名而不是列名。 – 2014-12-26 14:33:57

0

为此,您必须为两个表格准备第一个虚拟表。 然后,您可以对它们应用索引搜索(FTS Search),使用与简单表一起使用连接时的连接。