Search 如何在FaunaDB中进行文本搜索
如何在属性上搜索文档Search 如何在FaunaDB中进行文本搜索,search,n-gram,faunadb,Search,N Gram,Faunadb,如何在属性上搜索文档 例如:我们有一个城市集合,我们希望通过它们的名称属性进行搜索我觉得这个主题没有很好地涵盖,所以我将发布一个工作示例 您必须在要搜索的属性的ngram列表上创建索引 CreateIndex({ name: 'cities_by_ngrams', source: [ { // If your collections have the same property that you want to access you can pass a list to th
例如:我们有一个城市集合,我们希望通过它们的名称属性进行搜索我觉得这个主题没有很好地涵盖,所以我将发布一个工作示例 您必须在要搜索的属性的ngram列表上创建索引
CreateIndex({
name: 'cities_by_ngrams',
source: [
{
// If your collections have the same property that you want to access you can pass a list to the collection
collection: [Collection('cities')],
fields: {
wordparts: Query(
Lambda('city',
Distinct(
Union(
Let(
{
ngrams: q.Map(
// ngrams
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
Lambda('i', NGram(
LowerCase(Select(['data', 'name'], Var('city'))),
Var('i'),
Var('i'),
)
)
)
},
Var('ngrams')
)
)
)
)
)
}
}
],
terms: [
{
binding: 'wordparts'
}
]
})
然后使用分页进行搜索
Map(
Paginate(Match(Index('cities_by_ngrams'), 'londo')),
Lambda('ref', Get(Var('ref')))
)
一种更简单的方法是,为每个文档创建一个ngram列表,然后在该字段上创建一个索引。缺点是,如果不需要该字段,就必须将其排除在外。我觉得这个主题没有很好地涵盖,因此我将发布一个工作示例 您必须在要搜索的属性的ngram列表上创建索引
CreateIndex({
name: 'cities_by_ngrams',
source: [
{
// If your collections have the same property that you want to access you can pass a list to the collection
collection: [Collection('cities')],
fields: {
wordparts: Query(
Lambda('city',
Distinct(
Union(
Let(
{
ngrams: q.Map(
// ngrams
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
Lambda('i', NGram(
LowerCase(Select(['data', 'name'], Var('city'))),
Var('i'),
Var('i'),
)
)
)
},
Var('ngrams')
)
)
)
)
)
}
}
],
terms: [
{
binding: 'wordparts'
}
]
})
然后使用分页进行搜索
Map(
Paginate(Match(Index('cities_by_ngrams'), 'londo')),
Lambda('ref', Get(Var('ref')))
)
一种更简单的方法是,为每个文档创建一个ngram列表,然后在该字段上创建一个索引。缺点是,如果不需要该字段,则必须将其排除在外。这可能是一个重复的问题?这可能是一个重复的问题?欲了解更多不同方法的人士,请参阅:欲了解更多不同方法的人士,请参阅: