1

ログテーブルに保存されている名前と日付の構造があります。これらは、ユーザーのアクションと、それを行った時期を表します。

Name        Date
John A.     2013-04-01
Leev B.     2013-04-02
Anse E.     2013-04-03

名前と日付の関係を維持しながら、そのデータにインデックスを付ける必要があります。セパレーター($)を使用して、フィールドを連結しようとしました:

"John A.$2013-04-01"
"Leev B.$2013-04-02"
"Anse E.$2013-04-03"

これは問題なく機能しましたが、今後は、ユーザーは名前を完全に入力せずに名前の一部で検索し、日付の範囲を使用できます。したがって、通常の検索は次のようになります。

fq = log_user_date:["John*2013-12-01" TO "John*2013-12-31"]

途中にワイルドカードを含むクエリ範囲を Apache Solr が処理できないことがあります。

「キー値」データをインデックス化するためのより良いソリューションはありますか?

4

1 に答える 1

0

名前と日付を区切り文字で連結するのはなぜですか? name代わりに、Solr で文字列フィールドと日付フィールドの 2 つの個別のフィールドを保持し、次dateのようなクエリを実行できます。

q=*:*&fq=name:John*&fq=date:[2013-12-01T00:00:00Z TO 2013-12-31T11:59:59Z]
于 2013-03-28T00:56:18.417 に答える