Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Performance 如何在ElasticSearch中实现短语查询的模糊性_Performance_Search_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Fuzzy Search_Search Suggestion - Fatal编程技术网 elasticsearch,fuzzy-search,search-suggestion,Performance,Search,elasticsearch,Fuzzy Search,Search Suggestion" /> elasticsearch,fuzzy-search,search-suggestion,Performance,Search,elasticsearch,Fuzzy Search,Search Suggestion" />

Performance 如何在ElasticSearch中实现短语查询的模糊性

Performance 如何在ElasticSearch中实现短语查询的模糊性,performance,search,elasticsearch,fuzzy-search,search-suggestion,Performance,Search,elasticsearch,Fuzzy Search,Search Suggestion,我们使用ElasticSearch搜索数百万个标签。我们的用户应该能够包括布尔运算符(+、-、“xy”和或括号)。如果未返回任何点击,我们将返回ES提供的拼写建议并再次搜索。这就是我们的疑问: $ curl -XGET 'http://127.0.0.1:9200/my_index/my_type/_search' -d ' { "query" : { "query_string" : { "query" : "some test query +b

我们使用ElasticSearch搜索数百万个标签。我们的用户应该能够包括布尔运算符(+、-、“xy”和或括号)。如果未返回任何点击,我们将返回ES提供的拼写建议并再次搜索。这就是我们的疑问:

$ curl -XGET 'http://127.0.0.1:9200/my_index/my_type/_search' -d '
{
    "query" : {
        "query_string" : {
            "query" : "some test query +bools -included",
            "default_operator" : "AND"
        }
    },
    "suggest" : {
        "text" : "some test query +bools -included",
        "simple_phrase" : {
            "phrase" : {
                "field" : "my_tags_field",
                "size" : 1
            }
        }
    }
}
我们希望启用模糊匹配,而不是仅提供拼写建议的回退。例如,如果用户搜索“stackoverflow”,ES应返回“stackoverflow”的匹配项


附加问题:什么是“纠正”拼写错误的更好方法?现在,我们必须执行两个后续请求,首先使用原始搜索词,然后使用by ES建议词。

查询字符串确实支持一些模糊性,但仅在使用~运算符时,我认为这与您的用例不符。我会添加一个,然后将其放入现有的查询字符串中。例如,您可以使用a并将模糊查询添加为should子句,将原始查询字符串保留为must子句


至于你关于如何纠正拼写错误的附加问题:如果你想让用户从列表中选择正确的纠正方法(例如,你的意思是什么),我会使用模糊查询自动纠正拼写错误,并随后发出两个请求,但你的方法听起来也不错。

谢谢-这证实了我的想法。无论如何,我们坚持我们已经拥有的。这似乎是一种更快的方法。关于“模糊查询”,ElasticSearch文档甚至提到了一个关于不具有良好可扩展性的警告。