0

OR演算子を使用しているときにsolrで近接クエリを作成することは可能ですか?例:

term1:"Samsung" term2:"galaxy note" OR "galaxy 3" OR ...

~n 近接した term1 と term2 の両方があるかどうかを調べる必要があります。

4

2 に答える 2

0

ここでの簡単なアプローチは、一連の長いフレーズ クエリを生成することです。そのため、"Samsung" と "galaxy note" を別々に検索するのではなく、それらを連結して、次のような結果を得ることができます。

"Samsung galaxy note" OR "Samsung galaxy 3" ...

必要な量のスロープを持つように設定します。

同様のケースを処理するComplexPhraseQueryParserを使用することもできますが 、フレーズ内の代替フレーズを処理するかどうかはわかりません。 SurroundQueryParserもこの種のことをサポートしますが、分析は行いません。つまり、事前にサブクエリを分析する必要があります (ドキュメントの制限セクションを参照してください)。

クエリを手動で生成したい場合は、一連の を使用して、より直接的にサポートできますSpanQuery。これは次のようになります。

Query rootQuery = parser.parse("\"Samsung\"");
Query option1Query = parser.parse("\"galaxy note\"");
Query option2Query = parser.parse("\"galaxy 3\"");
Query option3Query = parser.parse("\"something else\"");
SpanQuery orQuery = new SpanOrQuery(
    new SpanMultiTermQueryWrapper(option1Query), 
    new SpanMultiTermQueryWrapper(option2Query), 
    new SpanMultiTermQueryWrapper(option3Query)
);
SpanQuery finalQuery = new SpanNearQuery({new SpanMultiTermQueryWrapper(rootQuery), orQuery}, slop, true);
于 2013-09-17T15:48:14.907 に答える
0

これは、現在最新バージョンである Solr 4.4 ではデ​​フォルトでサポートされていません。

SOLR-1604には、いくつかの関連情報があります。

于 2013-09-16T19:53:15.727 に答える