Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 如何在FaunaDB中进行文本搜索_Search_N Gram_Faunadb - Fatal编程技术网

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列表,然后在该字段上创建一个索引。缺点是,如果不需要该字段,则必须将其排除在外。

这可能是一个重复的问题?这可能是一个重复的问题?欲了解更多不同方法的人士,请参阅:欲了解更多不同方法的人士,请参阅: