簡體   English   中英

如何使用結構化前綴運算符和 AWS CloudSearch 進行通配符搜索

[英]How to do wildcard search using structured prefix operator with AWS CloudSearch

我目前正在遷移到 2013 Cloudsearch API(來自 2011 API)。 以前,我一直在搜索中使用通配符前綴,如下所示:

bq=(and 'first secon*')  

我的查詢有時包括方面選項,這就是為什么我使用布爾查詢語法而不是簡單版本的原因。

我使用 2013 引擎創建了一個新的 cloudsearch 實例並將其編入索引。 bq參數現在沒有了,所以我必須使用q參數和q.parser=structured參數來獲得相同的功能。 當我用這樣的東西查詢時:

q.parser=simple&q=first secon*

...我得到了很多結果。 但是當我用這個查詢時:

q.parser=structured&q=(prefix 'first secon')

......我沒有命中。 我沒有收到錯誤,只是沒有找到結果。 難道我做錯了什么?

我剛剛意識到,如果我使用 2013 API 對單詞firs進行前綴搜索,則前綴搜索似乎有效。 但是,如果我在查詢中只有一個以上的術語,例如first secon則前綴搜索不起作用。 那么這是如何使用結構化前綴運算符完成的呢?

您需要為每個單獨的查詢詞指定前綴運算符,例如:

q=(or (prefix 'firs') (prefix 'secon'))&q.parser=structured

如果有人在尋找 JS 代碼來解決這個問題。 您需要做的是在空間上拆分用戶輸入,並將它們存儲在一個數組中。 將要查詢的單詞與管道連接在一起。

      var params = {
        query: ''
      };

      //Check for spaces
      let words = query.split(' ');
      let chunks = [];
      words.forEach(word => {
        chunks.push(`${word}* | ${word}`);
      })

      params.query = chunks.join(' | ');

      cloudsearch.search(params, function(err, data) {
        if (err) {
          reject(err);
        } else {
          resolve(data);
        }
      });

暫無
暫無

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

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