查找所有具有精确表达式的文档

问题描述 投票:0回答:1

如何在 Vespa 的所有文档中找到准确的表达?

我试图使用精确表达式查找特定文档的引用,但得到 0 个结果。 我有几份文档,其中的文本包含“文档 23/2010”。

我尝试运行以下查询:

vespa query 'yql=select title from Documents where text contains "\"Document 23/2010\"" LIMIT 10'

还尝试使用

grammar: phrase

yql vespa
1个回答
0
投票

上面的内容应该只适用于带有

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
,像 " 这样的字符是不可搜索的;它们会被分词器删除。

© www.soinside.com 2019 - 2024. All rights reserved.