我已经使用PHP Zend Framework search (基于Lucene)构建了一个搜索索引。搜索的是一个买卖网站。
我的搜索索引包括以下字段:
item-id (UnIndexed)
项目-标题(文本)
项目描述(UnStored)
项目-标签(文本)
item-price (关键字)
卖方id (UnIndexed)
卖方名称(文本)
我希望用户搜索索引,通过只搜索商品或按名称搜索卖家来过滤他们的搜索。
如果我使用Lucene的默认搜索设置进行搜索,我将搜索所有5个商品字段和卖家名称字段。这不是我想要发生的。我想的是,当用户进行搜索时,我希望他们被要求从下拉菜单中选择,如果他们正在搜索一个项目,或为卖家的名字。
如何在搜索商品时告诉搜索查询忽略卖家名称字段?在搜索卖家名称时,我如何才能告诉搜索查询不要搜索任何商品字段?还是为卖家名字创建一个单独的索引更好?
发布于 2009-07-07 03:39:58
目前没有办法在Lucene的查询语言或Zend_Search_Lucene查询构造应用程序接口中显式地不搜索字段。
但是,您可以明确列出要在查询中搜索的字段。下面是一个例子:
seller-name: Joe McBob如果使用这种方法,您必须明确列出要查询的字段以及要在其中搜索的内容。因此,如果您还需要使用相同的文本搜索item-title字段,则必须使用不同的字段名称重复上述操作。下面是一个例子:
seller-name: Joe McBob OR item-title: JoeMcBob当然,您也可以通过Zend_Search_Lucene提供的查询构建API来完成所有这些工作。manual有一些很好的例子。
这里值得注意的一件事是,正如您已经发现的那样,默认情况下,Zend_Search_Lucene将搜索所有字段。这是它与Java Lucene的不同之处之一。但是,您可以使用Zend_Search_Lucene类的setDefaultSearchField静态方法将默认字段设置为query。
https://stackoverflow.com/questions/1089680
复制相似问题