如何在 Vespa 的所有文档中找到准确的表达?
我试图使用精确表达式查找特定文档的引用,但得到 0 个结果。 我有几份文档,其中的文本包含“文档 23/2010”。
我尝试运行以下查询:
vespa query 'yql=select title from Documents where text contains "\"Document 23/2010\"" LIMIT 10'
还尝试使用
grammar: phrase
上面的内容应该只适用于带有
index
的字符串字段
vespa query 'yql=select * from doc where text contains "\"Document 23/2010\""'
{
"root": {
"id": "toplevel",
"relevance": 1.0,
"fields": {
"totalCount": 1
},
"coverage": {
"coverage": 100,
"documents": 1,
"full": true,
"nodes": 1,
"results": 1,
"resultsFull": 1
},
"children": [
{
"id": "id:doc:doc::1",
"relevance": 0.15974580091895013,
"source": "text",
"fields": {
"sddocname": "doc",
"documentid": "id:doc:doc::1",
"text": [
"Foo Bar \"Document 23/2010\" Bar"
]
}
}
]
}
}
如果添加
trace.level=3
,您将看到如何解析并执行后面的任何查询。
{
"message": "sc0.num0 dispatch response: Result (1 of total 1 hits)"
},
{
"message": "sc0.num0 fill to dispatch: query=[text:'document 23 2010'] timeout=9998ms offset=0 hits=10 groupingSessionCache=true sessionId=5304f5d0-6cd3-4dc4-be2e-666829413231.1708027994706.5.default grouping=0 : restrict=[doc] summary=[null]"
},
{
"message": "Current state of query tree: SPHRASE[explicit=false index=\"text\" isFromQuery=true isFromUser=true locked=true rawWord=\"\\\"Document 23/2010\\\"\" stemmed=true uniqueID=1]{\n WORD[fromSegmented=false index=\"text\" origin=null segmentIndex=0 stemmed=true words=true]{\n \"document\"\n }\n WORD[fromSegmented=false index=\"text\" origin=null segmentIndex=0 stemmed=true words=true]{\n \"23\"\n }\n WORD[fromSegmented=false index=\"text\" origin=null segmentIndex=0 stemmed=true words=true]{\n \"2010\"\n }\n}\n"
},
{
"message": "YQL+ representation: select * from doc where text contains ({origin: {original: \"\\\"Document 23\\/2010\\\"\", offset: 0, length: 18}, id: 1}phrase(\"document\", \"23\", \"2010\")) timeout 9998"
},
这里我们可以看到查询使用了短语搜索。
使用
index
,像 " 这样的字符是不可搜索的;它们会被分词器删除。