我的 silverstripe 站点中有一个新闻部分,我想使用 Silverstripe 的 FulltextSeach 功能:
FulltextSearchable::enable();
到目前为止效果很好。但我希望我的结果中只有 NewsPages。有没有办法过滤搜索,以便您只获得 certin pageType 作为结果?
在此先感谢,克里斯
我的 silverstripe 站点中有一个新闻部分,我想使用 Silverstripe 的 FulltextSeach 功能:
FulltextSearchable::enable();
到目前为止效果很好。但我希望我的结果中只有 NewsPages。有没有办法过滤搜索,以便您只获得 certin pageType 作为结果?
在此先感谢,克里斯
这是未经测试的代码,但我刚刚查看了sapphire/search/FulltextSearchable.php的源代码
在 mysite/_config.php 你可以添加:
FulltextSearchable::enable(array());
这应该删除默认搜索的类 SiteTree(所有页面)和 File
然后你可以在 mysite/_config.php 中添加一个对象扩展:
Object::add_extension('NewsPage', "FulltextSearchable('Title,MenuTitle,Content,MetaTitle,MetaDescription,MetaKeywords')");
以下是 FulltextSearchable.php 文件中的注释
/**
* Enable the default configuration of MySQL full-text searching on the given data classes.
* It can be used to limit the searched classes, but not to add your own classes.
* For this purpose, please use {@link Object::add_extension()} directly:
* <code>
* Object::add_extension('MyObject', "FulltextSearchable('MySearchableField,'MyOtherField')");
* </code>
*
* Caution: This is a wrapper method that should only be used in _config.php,
* and only be called once in your code.
*
* @param Array $searchableClasses The extension will be applied to all DataObject subclasses
* listed here. Default: {@link SiteTree} and {@link File}.
*/