1

私のCouchDBデータベースは次のように構成されています。

"custom_details": {
  "user_education": [
    {
      "device_id": "358328030246627",
      "college_name": "College",
      "college_year": "2014"
    },
  ]
}

"custom_details_1": {
  "user_education": [
    {
      "device_id": "358328030246627",
      "college_name": "College",
      "college_year": "2014"
    },
  ]
}

配列内にたくさんの配列があります。私がやろうとしていることは、Elasticsearchを使用して、配列のどこにあるかに関係なく、用語を検索して見つけることです。それは可能ですか?

私はここで例を調べてきましたが、探しているものがまったく見つかりませんでした。PHPラッパーであるElasticaを使用してみましたが、RESTでこれを行う方法を完全に理解していないと、迷子になります。フィールドを知らなくてもデータを検索することは可能ですか?

4

2 に答える 2

0

Luceneでは、デバイスIDごとにドキュメントインスタンスを作成できます。

public void indexRecord(CouchDBRecord rec) {
    Document doc = new Document();
    doc.add(new Field("device_id", rec.device_id, Store.YES, Index.NOT_ANALYZED));
    doc.add(new Field("college_name",  rec.college_name, Store.YES, Index.ANALYZED));
    doc.add(new Field("college_year", rec.college_year.toString(), Store.YES, Index.NOT_ANALYZED));
    this.writer.addDocument(doc);
}

これにより、大学名のキーワード、正確なデバイスIDまたは年、あるいはそれらの組み合わせで検索できます。

于 2011-05-22T04:10:27.937 に答える
0

Elasticaを使用している場合、RESTのすべてがすでに実行されています。すべてのフィールドで検索する場合は、検索語だけを定義すると、すべてのフィールドで検索されます。

Elasticaで問題が発生した場合、または必要な機能が不足している場合は、私がElasticaの開発者であるため、お知らせください。

于 2011-06-18T09:15:26.877 に答える