我很清楚它没有在规范中描述,但是如果我可以从我的后端获取一个关键字数组,比如说'article'对象,我将如何使用给定的搜索短语搜索它? / p>
我来自铁轨上的红宝石,如果这有助于解释
浮动在网络周围的一个突出的例子是待办事项列表示例,另一个示例 (参见:http://www.html5rocks.com/en/tutorials/indexeddb/uidatabinding/注意:镀铬破损) 让我们想象每种情况下的主要模型(todo任务和员工)除了文章中描述的内容之外还有一个关联的关键字数组。
现在说我想要根据关键字(或者员工示例中的“文书工作”)提到“罗马历史”的任务,存储在相应的上述数组中。
你怎么会这样做?
注意:我将使用它来构建一个谷歌Chrome打包应用程序和一个带有sencha touch 2或backbone.js的phonegap应用程序(如果其中一个或其中任何一个会使上述更容易,请告诉)
答案 0 :(得分:8)
我计划在YDN-DB中实施非常简单的全文搜索。我在想如下:
以后的关键光标可以扩展到包含相关阶段。
实施非常简单,检索速度非常快。
编辑:
在YDN-DB-FULLTEXT repo。
中实施使用search
方法查询全文搜索。
db.search(catalog, query)
使用add或put方法在存储到数据库期间索引文档。
查询格式是自由文本,其中隐式和/或/近似逻辑运算符适用 对于每个令牌。使用双引号进行精确匹配, - 从结果中减去 和*用于前缀搜索。
参数:的
{string} catalog
全文搜索目录名称,如架构中所定义。{string} query
自由文本查询字符串。返回:
{!ydn.db.Request}
返回请求对象。
done: {Array}
倒排索引的返回列表。倒排索引具有
以下属性:storeName
,primaryKey
,score
,tokens
,代表
存储原始文件名,原始文件主键,匹配
质量得分和令牌对象数组。令牌对象具有以下内容
属性:keyPath
,value
和loc
表示索引的关键路径
原始文件,原始文件和原始文件列表
文件中的单词位置。
fail: {Error}
如果删除密钥中的任何一个失败,则调用失败回调,
在各个元素中产生错误。
progress: {Array}
在索引检索期间,将调度原始反向索引。
var schema = {
fullTextCatalogs: [{
name: 'name',
lang: 'en',
sources: [
{
storeName: 'contact',
keyPath: 'first'
}],
]},
stores: [
{
name: 'contact',
autoIncrement: true
}]
};
var db = new ydn.db.Storage('db name', schema);
db.put('contact', [{first: 'Jhon'}, {first: 'Collin'}]);
db.search('name', 'jon').done(function(x) {
console.log(x);
db.get(x[0].storeName, x[0].primaryKey).done(function(top) {
console.log(top);
})
});
全文目录是一个或多个全文索引的逻辑分组。它是 在数据库模式中的数据库初始化中定义。
字段:
{string} name
全文目录名称。{string=} lang
语言。词干,分词和语音规范化
是语言依赖的。必须定义lang
以正确索引。目前
只有en
得到很好的支持。有关更多语言,请查看natural
项目回购。{Array} indexes
全文索引。每个索引都有源引用
storeName
和keyPath
的原始文档。 keyPath
的值是
要编入索引的文本。排名搜索结果时会应用weight
因子。
索引后也可以更改数据库中未存储的值。 first
和last
字段中的以下全文目录索引作者姓名
在first
上加权更多的记录值。
var catalog = {
name: 'author-name',
lang: 'en',
sources: [{
storeName: 'author',
keyPath: 'first',
weight: 1.0
}, {
storeName: 'author',
keyPath: 'last',
weight: 0.8
}]