簡體   English   中英

如何對部分Elasticsearch查詢進行全文搜索匹配

[英]How to do full text search matching on partial Elasticsearch queries

我將Elasticsearch與Laravel結合使用,實現了所有功能,並且可以與簡單的匹配查詢一起使用,如上面的代碼中所示。

'body' => [
                "query" => [
                       "bool" => [
                           "should" => [
                            ["regexp" => [
                               "tags" => [
                                   "value" => ".{2,8}" . $query . ".*",
                            ]
                            ],
                                ],
                            ["wildcard" => [
                               "tags" => [
                                   "value" => "*" . $query . "*",
                                   "boost" => 1.0,
                                   "rewrite" => "constant_score"
                                    ]
                                ]
                            ]
                        ]],
                    ], "highlight" => [
                    "fields" => [
                        "tags" => ["type" => "plain"]
                    ]
                ]
          ]

我收到了類似查詢“ java”的良好結果,同時收到了“ javascript”和“ nativjavascript”,但是問題在於接收短語結果。

我想輸入查詢“ java react”,並希望接收以下結果:“ java”,“ javascript”,“ javascript reactjs”,“ reactjs”,“ react”,“ nativjavascript”。

我對Laravel不熟悉,因此無法為您提供確切的語法,但可以告訴您該方法以及我如何在應用程序中解決此用例。

  1. 在可搜索字段上創建一個基於n-gram的分析器,該分析器將根據您配置的n-gram拆分標記。
  2. 根據space拆分搜索詞,在您使用java react的情況下,應將其拆分為2個搜索詞java and react
  3. 在搜索字段上將關鍵字分析器用作search_time分析器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM