2016-12-21 22 views
2

質問テキスト自体が実際に返された結果とほとんど関係ない場合でも、Algoliaは全文検索から5つの結果を返す必要があります。誰かがそれを示唆する前に、私はすでにremoveWordsIfNoResultsオプションをすべての可能なモードに設定しようとしましたが、これはまだ私が5つの結果を得ることを保証するものではありません。Algolia Search guarunteeに結果が返されるようにするにはどうすればいいですか

この目的は、現在のエンティティの名前が他のエンティティを検索するために使用される「関連エンティティ」サイドバーを作成することです。

提案がありますか?

答えて

4

removeWordsIfNoResults=allOptionalクエリパラメータを使用すると、確かに行くには良い方法です - すべてのクエリ単語は、デフォルトでは、オブジェクトを一致させるために必要とされているので>、が1あなたならば、まだ結果を取得するための良い方法である「オプション」にfallbackingクエリワード(またはワードの組み合わせ)は何も一致しません。

index.search(query, { removeWordsIfNoResults: 'allOptional' }); 

別の解決策は、常にオプション(だけでなく、フォールバックとして)としてすべてのクエリの単語を考慮することです。クエリfoo bar bazOPT(foo) AND OPT(bar) AND OPT(baz) < =>foo OR bar OR bazと解釈されるようにします。違いは、1つの一致する単語がオブジェクトを取得するのに十分であるため、このクエリは前のクエリより多くの結果を取得することです。

index.search(query, { optionalWords: query }); 

言われているように、エンジンに「少なくとも」少なくとも5つの結果を取得させる方法はありません。小さなフロントエンドロジックを使用することをお勧めします。removeWordsIfNoResultsまたはoptionalWords でクエリを実行します - エンジンが5個未満の結果を返す場合は、別のクエリを実行します。

関連する問題