MarkLogic:按 属性 值查找
MarkLogic: find by property value
我有一个 MarkLogic 8 数据库:
declareUpdate();
var book0 = {
id: fn.generateId({qwe: 'book'}),
username: 'book',
password: 'pass'
};
var book1 = {
id: fn.generateId({asd: 'book'}),
username: 'user',
password: 'pass1'
};
xdmp.documentInsert(
'zz' + book0.id,
book0,
xdmp.defaultPermissions(),
['qwe']);
xdmp.documentInsert(
'xx' + book1.id,
book1,
xdmp.defaultPermissions(),
['qwe']);
所以我想用 Node.js API:
按名称找到它们
var db = marklogic.createDatabaseClient(connection.connInfo);
var qb = marklogic.queryBuilder;
function findByName(name) {
return db.documents.query(
qb.where(
qb.collection('qwe'),
qb.value('username', name)
)
).result();
}
问题是它不仅找到 user
或 user0
,而且还找到 users
,如果我用用户名 book
创建文档,它会同时找到 book
和 books
。
值查询通过提取文本中的每个词来匹配 JSON 属性 的整个文本(如果启用提取,这是默认设置)。
如果(如本例)不是您想要的,您可以执行以下任一操作:
为 JSON 属性
创建字符串范围索引(如果只需要精确匹配,则使用根排序规则)
在数据库配置中打开单词搜索并在查询中使用 "unstemmed" 选项。
如果您还在数据库配置中关闭词干搜索,则不必传递该选项(并避免两种类型的索引所需的额外资源)。
要将配置更改限制为特定 属性,您可以为 属性 配置一个字段,而不是配置整个数据库。
有关更多背景信息,请参阅:
http://docs.marklogic.com/guide/search-dev/stemming
http://docs.marklogic.com/guide/admin/text_index
http://docs.marklogic.com/cts.jsonPropertyValueQuery?q=cts.jsonPropertyValueQuery&v=8.0&api=true
希望对您有所帮助,
我有一个 MarkLogic 8 数据库:
declareUpdate();
var book0 = {
id: fn.generateId({qwe: 'book'}),
username: 'book',
password: 'pass'
};
var book1 = {
id: fn.generateId({asd: 'book'}),
username: 'user',
password: 'pass1'
};
xdmp.documentInsert(
'zz' + book0.id,
book0,
xdmp.defaultPermissions(),
['qwe']);
xdmp.documentInsert(
'xx' + book1.id,
book1,
xdmp.defaultPermissions(),
['qwe']);
所以我想用 Node.js API:
按名称找到它们var db = marklogic.createDatabaseClient(connection.connInfo);
var qb = marklogic.queryBuilder;
function findByName(name) {
return db.documents.query(
qb.where(
qb.collection('qwe'),
qb.value('username', name)
)
).result();
}
问题是它不仅找到 user
或 user0
,而且还找到 users
,如果我用用户名 book
创建文档,它会同时找到 book
和 books
。
值查询通过提取文本中的每个词来匹配 JSON 属性 的整个文本(如果启用提取,这是默认设置)。
如果(如本例)不是您想要的,您可以执行以下任一操作:
为 JSON 属性
创建字符串范围索引(如果只需要精确匹配,则使用根排序规则)
在数据库配置中打开单词搜索并在查询中使用 "unstemmed" 选项。
如果您还在数据库配置中关闭词干搜索,则不必传递该选项(并避免两种类型的索引所需的额外资源)。
要将配置更改限制为特定 属性,您可以为 属性 配置一个字段,而不是配置整个数据库。
有关更多背景信息,请参阅:
http://docs.marklogic.com/guide/search-dev/stemming
http://docs.marklogic.com/guide/admin/text_index
http://docs.marklogic.com/cts.jsonPropertyValueQuery?q=cts.jsonPropertyValueQuery&v=8.0&api=true
希望对您有所帮助,