Solrのフィルタ構文についての質問

トピック作成者:ks-solruserml-bot (2024/08/15 10:43 投稿)
2
CloseClose

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

こんにちはチーム、

Solrのドキュメントで特殊なフィルタ構文について読んでいました -

https://solr.apache.org/guide/8_3/the-standard-query-parser.html#differences-between-lucenes-classic-query-parser-and-solrs-standard-query-parser

フィルタキャッシュ(定数スコアのブールクエリとして)に一部のクエリ句をキャッシュすることを示すための特殊なフィルタ(…)構文がサポートされています。これにより、サブクエリをキャッシュして他のクエリで再利用することができます。たとえば、inStock:trueは以下の3つのクエリのすべてでキャッシュされ再利用されます:

q=features:songs OR filter(inStock:true)

私の質問は、ORフィルタクエリの一部のキャッシュを無効にし、他の部分のキャッシュを有効にするにはどうすればよいかです?

例えば - 現在のFQ -

fq: planName:all_features OR zipCode:1234(この場合、全体のFQがキャッシュされます)

全体のFQは非常にユニークであるためキャッシュしたくありませんが、パフォーマンスを改善するために最初の部分(planName:all_features)をキャッシュしたいと考えています。これをどうやって実現できますか?

以下のような理解をしていますが、正しいですか?

fq: {!cache=false}(filter(planName:all_features) OR zipCode:1234)

上記の構文でplanName:all_featuresがフィルタキャッシュにキャッシュされるのでしょうか?それとも、どのようにこれを実現できますか?

私はSolr 8.4を使用しています。

ありがとうございます、

Yash

返信投稿者:ks-solruserml-bot (2024/08/15 10:43 投稿)

おそらく90%は不可能だと思います。フィルタキャッシュでは、キャッシュ内の各エントリのキーとしてフィルタ全体のテキストが使用されます。

そのコード部分には詳しくありませんが、仮に可能であっても、ほぼ完全なSolrのフィルタクエリコードの書き換えが必要になると思います。

ありがとうございます、
Shawn

返信投稿者:ks-solruserml-bot (2024/08/15 10:44 投稿)

例えば - 現在のFQ -
fq: planName:all_features OR zipCode:1234(この場合、全体のFQがキャッシュされます)
全体のFQは非常にユニークであるためキャッシュしたくありませんが、パフォーマンスを改善するために最初の部分(planName:all_features)をキャッシュしたいと考えています。これをどうやって実現できますか?
以下のような理解をしていますが、正しいですか?
fq: {!cache=false}(filter(planName:all_features) OR zipCode:1234)

正しいです。

小規模なテストでは、キャッシュメトリクスを見てその動作を確認できます。以下に例を示します。

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

hossman@slate:~$ curl -sS 'http://localhost:8983/solr/admin/metrics?omitHeader=true&key=solr.core.techproducts:CACHE.searcher.filterCache'
{
"metrics":{
"solr.core.techproducts:CACHE.searcher.filterCache":{
"lookups":0,
"hits":0,
"hitratio":1.0,
"inserts":0,
"evictions":0,
"size":0,
"warmupTime":0,
"ramBytesUsed":448,
"maxRamMB":-1,
"cumulative_lookups":0,
"cumulative_hits":0,
"cumulative_hitratio":1.0,
"cumulative_inserts":0,
"cumulative_evictions":0}}}
hossman@slate:~$ curl --globoff -sS 'http://localhost:8983/solr/techproducts/select?q=*:*&rows=0&omitHeader=true&fq={!cache=false}(filter(inStock:true)+OR+id:IW-02)'
{
"response":{"numFound":18,"start":0,"numFoundExact":true,"docs":[]
}}
hossman@slate:~$ curl -sS 'http://localhost:8983/solr/admin/metrics?omitHeader=true&key=solr.core.techproducts:CACHE.searcher.filterCache'
{
"metrics":{
"solr.core.techproducts:CACHE.searcher.filterCache":{
"lookups":1,
"hits":0,
"hitratio":0.0,
"inserts":1,
"evictions":0,
"size":1,
"warmupTime":0,
"ramBytesUsed":1744,
"maxRamMB":-1,
"cumulative_lookups":1,
"cumulative_hits":0,
"cumulative_hitratio":0.0,
"cumulative_inserts":1,
"cumulative_evictions":0}}}
hossman@slate:~$ curl --globoff -sS 'http://localhost:8983/solr/techproducts/select?q=*:*&rows=0&omitHeader=true&fq={!cache=false}(filter(inStock:true)+OR+id:GB18030TEST)'
{
"response":{"numFound":17,"start":0,"numFoundExact":true,"docs":[]
}}
hossman@slate:~$ curl -sS 'http://localhost:8983/solr/admin/metrics?omitHeader=true&key=solr.core.techproducts:CACHE.searcher.filterCache'
{
"metrics":{
"solr.core.techproducts:CACHE.searcher.filterCache":{
"lookups":2,
"hits":1,
"hitratio":0.5,
"inserts":1,
"evictions":0,
"size":1,
"warmupTime":0,
"ramBytesUsed":1744,
"maxRamMB":-1,
"cumulative_lookups":2,
"cumulative_hits":1,
"cumulative_hitratio":0.5,
"cumulative_inserts":1,
"cumulative_evictions":0}}}

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

KandaSearch

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

投稿の削除

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