1

我正在使用 Zend Lucene,但不要认为这个问题是特定于该库的。

假设我想为书籍数据库提供全文搜索。假设以下模型:

型号 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 个或多个作者 + 有关出版商、页数等的信息)

为了将与特定书籍关联的所有作者插入要索引的文档中,我需要做什么?我是否将所有作者放在文档的一个字段中?我会使用某种分隔符对作者信息进行分组吗?我正在寻找这种数据的一般策略。

4

1 回答 1

0

用分隔符将所有作者放在文档的一个字段中。所以文档模式将是:

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 回答