Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用zend_search_lucene构建类似google的搜索功能?_Php_Lucene_Full Text Search_Search Engine_Zend Search Lucene - Fatal编程技术网

Php 如何使用zend_search_lucene构建类似google的搜索功能?

Php 如何使用zend_search_lucene构建类似google的搜索功能?,php,lucene,full-text-search,search-engine,zend-search-lucene,Php,Lucene,Full Text Search,Search Engine,Zend Search Lucene,我正在使用zend_search_lucene在文档中搜索关键字。 在其中一个文档中,它有一个短语,这给了我一堂宝贵的时间管理课,因为我白天还要参加讲座和辅导。我喜欢改进我的电话方式,并学会处理对我的捐款请求的不同反应。 现在,如果搜索“关于时间管理的宝贵课程”,结果一无所获。我使用下面的代码来搜索它 Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_T

我正在使用zend_search_lucene在文档中搜索关键字。 在其中一个文档中,它有一个短语
,这给了我一堂宝贵的时间管理课,因为我白天还要参加讲座和辅导。我喜欢改进我的电话方式,并学会处理对我的捐款请求的不同反应。

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

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”,但剩余的单词正在匹配。 如果匹配的单词很少(即使没有几个单词不匹配),如何获得结果计数

谢谢你的建议


参考资料:

问题不在于zend_search_lucene,而在于lucene如何为数据编制索引。我建议您阅读Solr文档以了解其工作原理。此外,如果您发布schema.xml信息(您可以在其中定义哪些信息应该被索引以及以何种方式进行索引),也会有所帮助。

这里的关键可能是stopwords。如果您将“in”和“on”定义为stopwords(Lucene会忽略这些词,因为它们太常见),那么您的查询“时间管理的宝贵经验”将与文档文本的“时间管理的宝贵经验”部分相匹配。

您好,我正在将所有类型的文档转换为文本,并将其提供给Lucene索引。数据不是来自数据库。所以这里没有使用YML文件。你能建议我如何做到这一点吗?看看这篇文章,它可能会帮助你感谢你的反馈。在上述情况下,这可能是因为停止词。但我仍然想知道如何得到结果计数,即使很少的词得到匹配,而不考虑停止词。。。。