无法获取在ArangoDB中正常工作的ArangoSearch视图

djmepvbi  于 2022-12-09  发布在  Go
关注(0)|答案(1)|浏览(136)

我在使用ArangoSearch时遇到问题。
下面是我在一个名为things的集合中拥有的一些虚拟数据(为了简单起见,我删除了它们的“_id”、“_key”和“_rev”属性):

{"text":"eat a cookie"}
 
{"text":"I like cookies"}
 
{"text":"Timmy how are u"}
 
{"text":"I read a book on elves"}

我有一个如下所示的视图(我将其命名为practice):

{
  "writebufferIdle": 64,
  "type": "arangosearch",
  "primarySortCompression": "lz4",
  "links": {
    "things": {
      "analyzers": [
        "text_en",
        "identity"
      ],
      "fields": {
        "text": {
          "analyzers": [
            "text_en"
          ]
        }
      },
      "includeAllFields": true,
      "storeValues": "none",
      "trackListPositions": false
    }
  },
  "primarySort": [],
  "writebufferSizeMax": 33554432,
  "consolidationPolicy": {
    "type": "tier",
    "segmentsBytesFloor": 2097152,
    "segmentsBytesMax": 5368709120,
    "segmentsMax": 10,
    "segmentsMin": 1,
    "minScore": 0
  },
  "cleanupIntervalStep": 2,
  "commitIntervalMsec": 1000,
  "storedValues": [],
  "id": "138993",
  "globallyUniqueId": "h23A40B2F96C2/138993",
  "writebufferActive": 0,
  "consolidationIntervalMsec": 1000
}

当我执行如下AQL搜索时,它正确地返回4:

FOR docs IN practice COLLECT WITH COUNT INTO num RETURN num

但是,当我执行这样的AQL搜索时,我得到的大多是空数组:

FOR doc IN practice
SEARCH ANALYZER(doc.text == "cookie", "text_en")
RETURN doc

(奇怪的是,有一两个词可以处理上述内容,但大多数都不行--例如,“cookie”返回一个空数组,而“how”返回一个匹配项)
知道我做错了什么吗?
谢谢

pgpifvop

pgpifvop1#

索引的text字段应用了text_en处理,但您没有将其应用于搜索词。
ANALYZER(doc.text == "cookie", "text_en")
ANALYZER()函数在这里只为索引数据选择分析器。
根据分析器转换存储的属性值的方式,可能会由于词干处理而出现不匹配。所有内置文本分析器都启用了词干处理。
尝试RETURN TOKENS("cookie", "text_en")以查看分析器对单词执行的操作。
这要找两件事:
ANALYZER(doc.text == TOKENS("cookie", "text_en")[0], "text_en")

相关问题