0

私は次のluceneインデックスを持っています:

Document A
item = level:(1)
item = level:(2)
item = level:(3)

Document B
item = level:(1)
item = level:(4)

level:(1)AND level:(2)を含むすべてのドキュメントを検索するとしますか?

Luceneクエリは次のようになります。

"item:level\:\(1\) AND level\:\(2\)"

しかし、次のようなことも可能ですか?

"item:level\:\(1 OR 2\)"

(これは、文字列を繰り返したくないためです"level\:"

4

1 に答える 1

0

最も簡単な解決策はlevel、クエリ パーサーのデフォルト フィールドを作成して、クエリを次のように削減することです。

(1 OR 2)

ただし、これはまさにあなたが探しているものではないと思います...

Lucene クエリ パーサー構文のドキュメントによると、求めていることはブール演算子 (ANDおよび)を使用して行うことはできませんOR+ただし、プラス ( ) およびマイナス ( -) 演算子を使用すると可能になるようです。ドキュメントによると:

Lucene は、括弧を使用して複数の句を 1 つのフィールドにグループ化することをサポートしています。

「return」という単語と「pink panther」という語句の両方を含むタイトルを検索するには、次のクエリを使用します。

title:(+return +"pink panther")

これはまさにあなたが探しているものではありませんが、適切かもしれません。OR節がこのようにどのように書かれるのか、私にはわかりません。

于 2009-06-10T11:09:51.687 に答える