使用SQLite FTS3,如何连接或嵌套SELECT语句以获得行加代码段
Using SQLite FTS3, how to join or nest SELECT statements to get row plus snippet?
我有一个名为categories
的SQLite FTS3虚拟表,其中包含列category, id, header, content
。我想搜索它,并让结果同时包含列数据和snippet()
结果。
最后想要的行为是显示类别&搜索词的每个匹配项的ID,然后如果在内容列中找到该搜索词,还显示每个片段。像这样:
Search term "virus":
Category: Coughing
ID: Coughing Symptoms
Snippet 1: "the common cold, which is spread by the cold <b>virus</b> blah blah etc"
Snippet 2: "lorem ipsum some other things <b>virus</b> and then some other stuff"
Category: Coughing
ID: Coughing treatment
Snippet 1: "...coughing can be treated by managing the symptoms. If a <b>virus</b> blah etc"
Category: Headache
ID: Headache Symptoms
Snippet: "I think you get the idea now <b>virus</b> more things"
我现在可以将搜索行结果和代码段作为单独的函数获取。这将搜索表并正确打印出行元素:
function SearchValueInDB() {
db.transaction(function(transaction) {
var search = $('#txSearch').val(),
query = "SELECT * FROM guidelines WHERE guidelines MATCH '" + search + "*';";
transaction.executeSql(query,[], function(transaction, result) {
if (result != null && result.rows != null) {
if (result.rows.length == 0) {
//no results message
} else {
for (var i = 0; i < result.rows.length; i++) {
var row = result.rows.item(i);
$('#lbResult').append('<br/> Search result:' + row.category + ' ' + row.id + ' ' + row.header + '<br/>');
}
}
}
},nullHandler,errorHandler);
});
}
这将在content
列中搜索片段,并打印出它们的列表:
function SearchForSnippet() {
db.transaction(function(transaction) {
var search = $('#txSearch').val(),
query = "SELECT snippet(guidelines) FROM guidelines WHERE content MATCH '" + search + "*';";
transaction.executeSql(query,[], function(transaction, result) {
if (result != null && result.rows != null) {
$('#lbResult').html('');
for (var i = 0; i < result.rows.length; i++) {
var row = result.rows.item(i);
for(var key in row) {
var value = row[key];
$('#lbResult').append('<br/> ' + i + value );
}
}
}
},nullHandler,errorHandler);
});
}
到目前为止,我可以想象两种可能的方法:要么我可以以某种方式组合SELECT查询——尽管我找不到任何使用snippet()函数的JOINing查询的例子。或者,我可以创建一个新函数findSnippet()
,并在每次迭代后通过result.rows
数组调用它。这两种方法中的任何一种可能奏效吗,或者有更好的方法来处理这一问题吗?
只需列出每个匹配记录想要获得的所有结果列:
SELECT category,
id,
header,
snippet(guidelines) AS snip
FROM guidelines
WHERE content MATCH 'snail*'
相关文章:
- SELECT FROM WHERE语句在使用变量时不起作用…
- 使用SQLite FTS3,如何连接或嵌套SELECT语句以获得行加代码段
- 动态生成 jQuery select 语句
- .post javascript with PHP 以启用 select 语句返回
- 从 select 中获取 ID,并在 if 语句中使用它们
- 在 Ruby on Rails 中使用带有 If 语句的 Select Option 表单
- 如何对返回数据列表的清除Select语句进行编码
- 使用php的动态变量从sql select和update语句的下拉列表中获取
- 使用JavaScript填充HTML select语句
- 定义函数并在select语句中用作onchange,而不是直接使用.change(function)
- 如何在select表单中使用if-else语句
- 使用select语句进行动态图像交换
- Prototype - select语句对某些元素不起作用
- 从select html标签中选择的值在javascript if/else语句中没有产生正确的结果
- HTML5SQL使用SELECT语句从web数据库检索记录
- 如何在HTML中使用if语句(JavaScript)和select标记
- 从javascript while循环中创建一个select语句
- 从输入字段获取变量值,并在SELECT-WHERE语句中使用它
- 如何对两个select语句进行分页
- 如何设置select语句的值