0

我正在使用 zend_search_lucene 在文档中搜索关键字。在其中一份文件中有短语This taught me a valuable lesson in time management as I still had to attend lectures and tutorials during the day. I enjoyed improving my telephone manner and learning to deal with different reactions to my requests for donations.

现在,如果搜索“关于时间管理的宝贵课程”,它会一无所获。我正在使用下面的代码来搜索它。

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive());

$index = new Zend_Search_Lucene('/home/project/mgh/data/search_file/lucene.customer.index');

 Zend_Search_Lucene::getDefaultSearchField('contents');

    $results = $index->find('contents:"valuable lesson on cost management" ');

    $this->count=count($results);

在上面的例子中,只有不匹配是,代替'in'有'on',但剩余的单词正在匹配。如果匹配的单词很少(即使很少的单词不匹配),如何获得结果计数?

感谢您的建议。

参考: http: //framework.zend.com/manual/en/zend.search.lucene.query-language.html

4

2 回答 2

0

问题不在于 zend_search_lucene,而在于 Lucene 如何索引您的数据。我建议您阅读Solr 文档中的Analyzers、Tokenizers 和 Token Filters以了解其工作原理。如果您发布您的 schema.xml 信息(您定义哪些信息应该被索引以及以何种方式),这也会有所帮助。

于 2012-06-04T10:19:57.513 回答
0

这里的关键可能是停用词。如果您将“in”和“on”定义为停用词(Lucene 将忽略这些词,因为它们太常见了),那么您的查询“时间管理有价值的课程”将匹配文档文本的“时间管理的宝贵课程”部分.

于 2012-06-04T12:10:02.663 回答