1

私はZendLuceneを使用していますが、質問がそのライブラリに固有のものではないと思います。

本のデータベースの全文検索を提供したいとします。次のモデルを想定します。

モデル1:

TABLE: book
- book_id
- name

TABLE: book_author
- book_author_id
- book_id
- author_id

TABLE: author
- author_id
- name

(本には0人以上の著者を含めることができます)

モデル2:

TABLE: book
- book_id
- name

TABLE: book_eav
- book_eav_id
- book_id
- attribute (e.g. "author")
- value (e.g. "Tom Clancy")

(本には、0人以上の著者+出版社、ページ数などに関する情報を含めることができます)

索引付けするドキュメントに特定の本に関連するすべての著者を挿入するには、何をする必要がありますか?ドキュメントの1つのフィールドにすべての作成者を入れますか?著者情報をグループ化するために、ある種の区切り文字を使用しますか?この種のデータを使った一般的な戦略を探しています。

4

1 に答える 1

0

区切り文字を使用して、すべての作成者をドキュメントの1つのフィールドに入力します。したがって、ドキュメントスキーマは次のようになります。

book_id
name
author: |author 1|author 2|...|author n|
other_attribute_1: |val 1|val 2|
other_attribute_2: |val 1|val 2|

このスキーマを使用すると、次のようなクエリを使用して、さまざまなブーストを使用して作成者で検索できます。

(author:"|Tom Clancy|")^10 OR 
(author:"Tom Clancy")^5 OR 
(author:Tom Clancy)^1

このクエリでは、最初に完全一致が表示され、次にフレーズ一致が表示され、最後に他の一致が表示されます。

于 2011-11-21T14:39:41.360 に答える