私はSolrの近接検索を頻繁に使用して、互いに指定された範囲内の単語を検索します。
"Government Spending" ~2
フレーズと単語または2つのフレーズを使用して近接検索を実行する方法があるのだろうかと思いました。これは可能ですか?もしそうなら、構文は何ですか?
これは「ある程度」実行可能であるように見えます。このテキストを検討してください:
This is more about traffic between Solr servers themselves
順序を変更しても機能します。
しかし、離れすぎていると機能しなくなります。
それがうまくいかない場合は、これを行うカスタムリクエストハンドラーを作成するのはおそらくそれほど難しいことではないと思います。新しい構文を定義する必要があるかもしれません。おそらく。のようなもの("phrase one" "phrase two") ~2
です。瓦礫を使っていて、「フレーズ1」と「フレーズ2」のトークンがある程度近接しているLuceneクエリを作成すると、うまくいくと思います。(もちろん、実際にlucene java呼び出しを行う必要があります。クエリを渡すことはできません(このhttp://lucene.apache.org/java/2_2_0/api/index.htmlを読んでください))。
箱から出して、複数の単語またはフレーズを使用してSolr近接検索を実行する方法を発見しました。以下を参照してください。
例えば。3つの言葉で:
"(word1)(word2)(word3)"〜10
例えば。2つのフレーズで:(二重引用符はエスケープする必要があることに注意してください)
"(\" phrase1 \ ")(\" phrase2 \ ")"〜10
Solr 4以降、SurroundQueryParserで可能です。
たとえば、「フレーズ2」が「フレーズ1」の後に3語以内で続く場合、次のクエリを実行します。
3W(phrase W one, phrase W two)
「フレーズ1」の5語の近くで「フレーズ2」をクエリするには、次のようにします。
5N(phrase W one, phrase W two)