0

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 全体をバイパスしますか?

4

1 に答える 1