【问题标题】:How to save multiple integer values within a Zend search lucene keyword?如何在 Zend 搜索 lucene 关键字中保存多个整数值?
【发布时间】:2011-09-21 13:50:46
【问题描述】:

我想在我的数据库模型上添加一个 lucene 层。一切正常,我在主要内容旁边使用了几个关键字,这些关键字由一些 HTML 数据填充。

例如

$doc = Zend_Search_Lucene_Document_Html::loadHTML($html);
$doc->addField(Zend_Search_Lucene_Field::keyword('author_id', 1));

我有一个 1:N 表,其中包含一些我想用来过滤搜索结果的数据。假设该文档是一篇可以在不同类别中发布的文章。我现在有一个类别 ID 数组,我想以某种方式将它们添加到此文档中。我的第一种方法是将数组内爆并将其保存为字符串:

$doc->addField(Zend_Search_Lucene_Field::keyword('categories', '12, 15, 22'));

但事实证明搜索有点复杂(搜索类别 1 也返回 12 和 15)。然后我创建了一些“神奇”的字符串,例如 CAT_12_A 而不是 12 以使它们独一无二:

$doc->addField(Zend_Search_Lucene_Field::keyword('categories', 'CAT_12_A, CAT_15_A, CAT_22_A'));

这工作得很好,但我对这个解决方案并不完全满意,因为它显然是一个 hack。有没有机会在没有这种奇怪的黑客攻击的情况下向 Zend Lucene 文档添加多值“关键字”?

感谢您的帮助。

【问题讨论】:

  • 我进入这个页面时遇到了同样的问题,我想的正是 CAT_12_ 解决方案,就像你的一样;) 你找到更好的解决方案了吗?

标签: php zend-framework lucene zend-search-lucene


【解决方案1】:

找到你的问题后,我做了很多谷歌搜索:看起来没有办法直接添加多值字段而不修改zend框架核心代码。

你试过了吗

$doc->addField(Zend_Search_Lucene_Field::keyword('category_1', '12' ));
$doc->addField(Zend_Search_Lucene_Field::keyword('category_2', '15' ));
$doc->addField(Zend_Search_Lucene_Field::keyword('category_3', '22' ));

?看起来 query() 会搜索所有字段,所以如果你不在乎哪个字段匹配你应该没问题?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-26
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    相关资源
    最近更新 更多