Umbraco で Examine を使用して、コンテンツ ノードの Lucene インデックスをクエリしています。すべてのノード プロパティを連結した "completeNodeText" フィールドがあります (物事をシンプルに保ち、複数のフィールドを検索しないようにするため)。
ユーザーが送信した検索語句を受け入れています。検索語が複数の単語 (つまり、「firstterm secondterm」) の場合、結果のクエリを OR クエリにしたい: fullNodeText が firstterm OR secondterm である結果を返す。
私が欲しい:
{+completeNodeText:"firstterm ? secondterm"}
しかし、代わりに、私は得ています:
{+completeNodeText:"firstterm secondterm"}
「firstterm secondterm」ではなく「firstterm OR secondterm」を検索すると、生成されたクエリは正しくなります。{+completeNodeText:"firstterm ? secondterm"}
次の API 呼び出しを使用しています。
var searcher = ExamineManager.Instance.SearchProviderCollection["ExternalSearcher"];
var searchCriteria = searcher.CreateSearchCriteria();
var query = searchCriteria.Field("completeNodeText", term).Compile();
Examine にこの "OR" クエリを強制的に生成させる簡単な方法はありますか? または、StandardAnalyzer を呼び出してユーザー入力をトークン化し、トークンを反復処理してクエリを連結することで、生のクエリを手動で作成する必要がありますか? Examine fluent query API 全体をバイパスしますか?