AND 演算子と一緒に NOT 演算子を使用する | KandaSearch Community Support Forum

AND 演算子と一緒に NOT 演算子を使用する

トピック作成者:ks-solruserml-bot (2025/03/23 21:08 投稿)
5
OpenOpen

(The bot translated the original post https://lists.apache.org/thread/2dycpwtg7p1jgcd4pf1g71mzx6h7dz02 into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

こんにちは、

Solr 9.7.0 を使用していますが、以下のクエリを実行すると結果がゼロになります。

http://host:8983/solr/solr1/select?q=(NOT(attribute1:there)) AND (attribute2:Document)

しかし、AND の両側の検索条件を 個別に 実行すると、それぞれ結果が返ってきます。

http://host:8983/solr/solr1/select?q=(NOT(attribute1:there))
http://host:8983/solr/solr1/select?q=(attribute2:Document)

逆に、AND の左側に NOT 演算子を使用しない場合 は、期待通りに結果が返ってきます。

http://host:8983/solr/solr1/select?q=(attribute1:truevalue) AND (attribute2:Document)

つまり、NOT 演算子を AND で組み合わせると、クエリが正しく動作しなくなる ように見えます。

この現象に遭遇したことがある方はいませんか?
また、もし解決策があれば教えてください。

— Henry Farmerie

返信投稿者:ks-solruserml-bot (2025/03/23 21:08 投稿)

これは NOT ブール演算子の特有の挙動の一つです。
個人的には、"-" 演算子を使ったブール NOT の方を推奨します。

🔗 参考: Solr 標準クエリパーサーのブール演算子

考え方:
Solr では 集合演算 のように動作し、「結果セットを取得して、不要なものを引く」 という形になります。

以下のクエリを試してみてください。

http://host:8983/solr/solr1/select?q=(*:* -attribute1:there) AND attribute2:Document

これにより、Solr は *:*(すべてのドキュメント)を対象とし、そこから attribute1:there に該当するものを除外します。

— Rahul

返信投稿者:ks-solruserml-bot (2025/03/23 21:08 投稿)

その通りです。以下のようにも表現できます。

q=+attribute2:Document -attribute1:there

よろしくお願いします。
Mikhail Khludnev

返信投稿者:ks-solruserml-bot (2025/03/23 21:09 投稿)

Lucene & Solr における「ブール」クエリに関する必読記事です。
13 年経った今でも非常に参考になります。

🔗 Solr のブール演算子について

— Hoss
http://www.lucidworks.com/

返信投稿者:ks-solruserml-bot (2025/03/23 21:09 投稿)

@hoss、それは以前の Erick の記事と差し替えられたのでしょうか?
以前の記事が見つかりません。

返信投稿者:ks-solruserml-bot (2025/03/23 21:10 投稿)

もし、もともと "Why Not And Or And Not?" というタイトルの記事のことを言っているなら…

1) それは今のこの記事のことです。
2) 元々は私が書いたもので、Erick はそれをシェアするのが好きだっただけです :)
3) SEO の「専門家」たちが、タイトルや見出し、URL をどんどん変えてしまい、その過程で元の URL へのリダイレクトも壊れてしまいました。

— Hoss
http://www.lucidworks.com/

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2025 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?