Solrのテキストフィールドで数値検索

トピック作成者:ks-solruserml-bot (2024/05/28 20:02 投稿)
1
CloseClose

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

こんにちは、

Solrのテキストフィールドで数値検索を行う際に、次のような問題があります。

私たちには、製品の説明を含むテキストフィールド(isq)があります。

製品: Elanpro Metal Mini Bar Solid Door Refrigerator, Top-Freezer, 2 To 12 Deg C

フィールドの定義:

<field name="isq" type="text" indexed="false" stored="true" required="false" multiValued="true"/>

データインデックスは以下のように見えます:

"isq": [
  "Door Type==Single Door",
  "Color==Black",
  "Body Material==Metal",
  "Type==Top-Freezer",
  "Temperature Range==2 to 12 Deg C",
  "Brand==Elanpro",
  "Capacity==30-60 Liters"
]

クエリ: 容量が「100まで」の製品を取得したい場合、

fq=isq:"upto 100"

このようにクエリを作成し、100までの容量を持つ製品を取得するにはどうすれば良いでしょうか?この問題を解決するためにfqをどのように使用すれば良いか教えてください。

返信投稿者:ks-solruserml-bot (2024/05/28 20:02 投稿)

こんにちは、

あなたのデータ(フィールド->値のマップフィールド)が構造化されていないフィールド 'isq' にインデックス化されているようです。
私の強い推薦は、適切なタイプを関連付けたスキーマに対応するフィールドを作成し、データモデルを設計することです。
インデックス作成パイプラインに少し努力を加えれば、Apache Solrでエレガントなドキュメントを作成でき、簡単にクエリを実行できます。

例えば、"product_capacity" という数値フィールドを追加し、次のようなシンプルな範囲クエリを実行することができます。

fq=product_capacity:[ * TO 100]

データから構造を抽出するのは簡単ではないかもしれませんが、あなたにとって便利かもしれません。
代替案として、テキスト内の数量を識別することも考えられます。
私の同僚のAndreaが過去に取り組み、貢献したプラグインがあります:
https://sease.io/2018/04/solr-quantity-detection-plugin.html
https://github.com/SeaseLtd/solr-quantities-detection-qparsers

参考までにどうぞ。

よろしくお願いします。

Alessandro Benedetti
Apache Lucene/Solr コミッター
ディレクター, R&D ソフトウェアエンジニア, 検索コンサルタント

www.sease.io

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

KandaSearch

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

投稿の削除

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