jus*_*inl 4 php lucene search full-text-search zend-framework
我使用PHP Zend Framework Search(基于Lucene)构建了一个搜索索引.搜索是针对买/卖网站.
我的搜索索引包括以下字段:
item-id(UnIndexed)
item-title(Text)
item-description(UnStored)
item-tags(Text)
item-price(keyword)
seller-id(UnIndexed)
seller-name(Text)
我希望用户搜索索引,通过搜索项目或按名称搜索卖家来过滤搜索.
如果我使用Lucene的默认搜索设置进行搜索,我将搜索所有5个项目字段和卖家名称字段.这不是我想要发生的事情.我想要的是当用户进行搜索时我希望他们在搜索项目或卖家名称时从下拉菜单中选择.
如何在搜索要忽略卖家名称字段的项目时告诉搜索查询?当搜索卖家名称时,我怎么能告诉搜索查询不搜索任何项目字段?或者为卖家名称创建单独的索引更好?
目前没有办法明确地不在 Lucene的查询语言或Zend_Search_Lucene查询构造API中搜索字段.
但是,可以明确列出哪些领域你不希望在一个查询搜索.一个例子是:
seller-name: Joe McBob
如果使用此方法,则必须明确列出要查询的字段以及要在其中搜索的内容.因此,如果您还需要item-title使用相同的文本搜索字段,则必须复制上述内容,但使用不同的字段名称.一个例子是:
seller-name: Joe McBob OR item-title: JoeMcBob
当然,您也可以通过提供的查询构建API来完成所有这些工作Zend_Search_Lucene.该手册已经有一些很好的例子.
这里值得注意的一点是,正如您所发现的那样,Zend_Search_Lucene默认情况下会搜索所有字段.这是它与Java Lucene不同的方式之一.但是,您可以使用类的setDefaultSearchField静态方法设置要查询的默认字段Zend_Search_Lucene.