使用Solr和Zend Lucene端口一起

5

下午好,

在使用Zend-Lucene-Search进行索引大型数据集时,发现它并不像宣传的那样有效,因此我转向了Solr(感谢Bill Karwin :))。

现在,我已经成功地让Solr对数据库进行了索引,速度快得多,只需8分钟左右就可以对1.7百万行的表进行索引 - 我非常满意。

然而,当我试图使用Zend端口搜索索引时,出现了以下错误:

Fatal error: Uncaught exception 'Zend_Search_Lucene_Exception' with message 'Unsupported segments file format' in /var/www/Zend/Search/Lucene.php:407 Stack trace: #0 /var/www/Zend/Search/Lucene.php(555): Zend_Search_Lucene->_readSegmentsFile() #1 /var/www/z_search.php(12): Zend_Search_Lucene->__construct('tmp/feeds_index') #2 {main} thrown in /var/www/Zend/Search/Lucene.php on line 407

我尝试过搜索相关信息,但似乎找不到这个问题的任何解决方案,每个人似乎都能让它们正常工作?

如往常一样,非常感谢您的帮助 :)

谢谢,

汤姆

2个回答

2
我在我的电脑上确认了,通过Solr创建的Lucene索引不能被Zend_Search_Lucene读取。
当Zend_Search_Lucene检测到它不支持的Lucene索引格式时,会抛出异常。从代码中可以看出,Zend目前支持的格式为2.1、2.3之前的版本。
Solr使用的索引格式为FORMAT_HAS_PROX,据我所知,这是Lucene 2.9及以上版本使用的。

啊,糟糕透了。那就没有别的解决办法了吗?我猜Zend代码也不会很快更新。看来我得力推Jetty/Tomcat服务器了。 - Tom
1
我认为一旦你让它运行起来,你肯定会更满意。我唯一的建议是尝试看看是否可以强制Solr创建2.3格式的Lucene索引。但我不知道怎么做。 - Bill Karwin

1

我以前从未使用过Zend,但我用过Lucene/Solr。

你在Solr索引和Zend端口中使用的是相同版本的Lucene吗?检查一下每个文件使用的Lucene jar文件。如果它们不同,那么Solr可能会生成一个与Zend端口不兼容的Lucene索引。


很有可能Solr的索引版本比Zend更先进。您可能需要考虑采取额外的步骤,使用Solr进行搜索,并通过HTTP接口(如XML或JSON)与PHP通信。 - Yuval F
我们已经考虑到这一点,唯一的问题是我们不确定在我们的实时服务器上运行Jetty/Tomcat的可能性。计划是在本地索引数据库,然后每隔x天上传它。我会研究Zend和Solr的Lucene版本,并确保它们在同一张谱子上演唱。 - Tom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接