我在使用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”返回一个匹配项)
知道我做错了什么吗?
谢谢
1条答案
按热度按时间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")