首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何排除使用Zend Search搜索指定字段(Lucene)

如何排除使用Zend Search搜索指定字段(Lucene)
EN

Stack Overflow用户
提问于 2009-07-06 23:33:52
回答 1查看 2.2K关注 0票数 4

我已经使用PHP Zend Framework search (基于Lucene)构建了一个搜索索引。搜索的是一个买卖网站。

我的搜索索引包括以下字段:

item-id (UnIndexed)

项目-标题(文本)

项目描述(UnStored)

项目-标签(文本)

item-price (关键字)

卖方id (UnIndexed)

卖方名称(文本)

我希望用户搜索索引,通过只搜索商品或按名称搜索卖家来过滤他们的搜索。

如果我使用Lucene的默认搜索设置进行搜索,我将搜索所有5个商品字段和卖家名称字段。这不是我想要发生的。我想的是,当用户进行搜索时,我希望他们被要求从下拉菜单中选择,如果他们正在搜索一个项目,或为卖家的名字。

如何在搜索商品时告诉搜索查询忽略卖家名称字段?在搜索卖家名称时,我如何才能告诉搜索查询不要搜索任何商品字段?还是为卖家名字创建一个单独的索引更好?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-07-07 03:39:58

目前没有办法在Lucene的查询语言或Zend_Search_Lucene查询构造应用程序接口中显式地不搜索字段。

但是,您可以明确列出要在查询中搜索的字段。下面是一个例子:

代码语言:javascript
复制
seller-name: Joe McBob

如果使用这种方法,您必须明确列出要查询的字段以及要在其中搜索的内容。因此,如果您还需要使用相同的文本搜索item-title字段,则必须使用不同的字段名称重复上述操作。下面是一个例子:

代码语言:javascript
复制
seller-name: Joe McBob OR item-title: JoeMcBob

当然,您也可以通过Zend_Search_Lucene提供的查询构建API来完成所有这些工作。manual有一些很好的例子。

这里值得注意的一件事是,正如您已经发现的那样,默认情况下,Zend_Search_Lucene将搜索所有字段。这是它与Java Lucene的不同之处之一。但是,您可以使用Zend_Search_Lucene类的setDefaultSearchField静态方法将默认字段设置为query。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1089680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档