「StrField」がコンテンツと「equals」の方法で一致しない

トピック作成者:ks-solruserml-bot (2024/05/23 13:00 投稿)
3
CloseClose

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

こんにちは、

私は文字列型(StrField)のフィールドを持っています。その中のデータは「abc xyz」という形式です。しかし、「xyz」と検索すると、「abc xyz」を含むドキュメントが1つ取得されます。

これに関して、qとfqを使用しても同じです。

フィルターを「field="xyz"」のように設定すると機能しますが、「field=xyz」では機能しません。

よろしくお願いします。
Subhajit

返信投稿者:ks-solruserml-bot (2024/05/23 13:00 投稿)

こんにちは、Subhajitさん、

それは奇妙ですね。StrFieldを使用すると、テキスト解析は行われません。
これは、「abc xyz」というテキストに対して単一のトークンが構築されることを意味します。
したがって、クエリfield:xyzもクエリfield:"xyz"もそのようなドキュメントを返すべきではありません。

リクエストパラメーターでdebug=queryを有効にしてクエリを実行することをお勧めします。この方法で、クエリがどのように解析され、クエリに関与する実際のフィールドがわかります。

ご参考までに。


Alessandro Benedetti
Apache Lucene/Solr Committer
Director, R&D Software Engineer, Search Consultant
www.sease.io

返信投稿者:ks-solruserml-bot (2024/05/23 13:00 投稿)

こんにちは、Alessandroさん、

提案ありがとうございます。

問題は、二重引用符を使用しない場合、"field: ola hello hi" のようなクエリが "field: ola (text:hello text:hi)" と解析されることです。これは、スペースで区切って最初のものだけを考慮しており、すべての部分が互いにor条件であることを意味します。二重引用符で囲むと、問題が解決します。

これはデフォルトの動作ですか?

ありがとう、
Subhajit

返信投稿者:ks-solruserml-bot (2024/05/23 13:00 投稿)

そのような挙動は、お使いのクエリパーサー(おそらくデフォルト/ルーシー)の正しい動作です。他のクエリパーサーを試してみることもできます。たとえば、フィールドクエリパーサーを探ってみると良いでしょう。おそらくパラメータの置換と組み合わせることができます。

以上、Alex

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

KandaSearch

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

投稿の削除

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