小编she*_*k42的帖子

Lucene中的多期通配符查询?

我正在使用Zend_Search_Lucene,它是Java Lucene的PHP端口.我目前有一些代码将基于字符串数组构建搜索查询,查找至少一个索引字段与提交的每个字符串匹配的结果.简化,它看起来像这样:

(注意:$ words是根据用户输入构造的数组.)

$query = new Zend_Search_Lucene_Search_Query_Boolean();
foreach ($words as $word) {
  $term1 = new Zend_Search_Lucene_Index_Term($word, $fieldname1);
  $term2 = new Zend_Search_Lucene_Index_term($word, $fieldname2);
  $multiq = new Zend_Search_Lucene_Search_Query_MultiTerm();
  $multiq->addTerm($term1);
  $multiq->addTerm($term2);
  $query->addSubquery($multiq, true);
}
$hits = $index->find($query);
Run Code Online (Sandbox Code Playgroud)

我会喜欢做的是替代$字($字"*".) -添加一个星号,以每个单词的末尾,把它变成一个通配符项.

但是,$ multiq必须是Zend_Search_Lucene_Search_Query_Wildcard而不是Zend_Search_Lucene_Search_Query_MultiTerm,我不认为我仍然可以为每个$ multiq添加多个Index_Terms.

有没有办法构建一个既可以是通配符又可以是MultiTerm的查询?

谢谢!

php lucene full-text-search zend-framework

6
推荐指数
1
解决办法
4442
查看次数

标签 统计

full-text-search ×1

lucene ×1

php ×1

zend-framework ×1