Bobo使用它的服务可以参考 BoboBrowseServiceImpl.java 在bobo-service/src目录,包package com.browseengine.bobo.service.impl下。
在Bobo新的版本下2.5.0下 比上一个版本2.0.6做了大的修改,所以里面的评分机制也做了修改。
[b]1)继承 BoboSubBrowser ,实现其中的 search[/b]
示例代码:
[b]2)继承SortCollector 实现其中的方法[/b]
示例代码:
[b]3)继承MultiBoboBrowser 实现 getSortCollector,其中用到了VoBoboSubBrowser,VoSortCollectorImpl [/b]
示例代码:
[b]4)在BoboBrowseServiceImpl.java中,使用VoMultiBoboBrowser[/b]
细节需要修改,暂时结束。
在Bobo新的版本下2.5.0下 比上一个版本2.0.6做了大的修改,所以里面的评分机制也做了修改。
[b]1)继承 BoboSubBrowser ,实现其中的 search[/b]
示例代码:
public class VoBoboSubBrowser extends BoboSubBrowser {
public VoBoboSubBrowser(BoboIndexReader reader) {
super(reader);
// TODO Auto-generated constructor stub
}
@Override
public void search(Weight weight, Filter filter, Collector collector) throws IOException
{
search(weight, filter, collector, 0);
}
}
[b]2)继承SortCollector 实现其中的方法[/b]
示例代码:
public class VoSortCollectorImpl extends SortCollector {
protected VoSortCollectorImpl(SortField[] sortFields, boolean fetchStoredFields) {
super(sortFields, fetchStoredFields);
// TODO Auto-generated constructor stub
}
@Override
public int getTotalHits() {
// TODO Auto-generated method stub
return 0;
}
@Override
public BrowseHit[] topDocs() throws IOException {
// TODO Auto-generated method stub
return null;
}
......
}
[b]3)继承MultiBoboBrowser 实现 getSortCollector,其中用到了VoBoboSubBrowser,VoSortCollectorImpl [/b]
示例代码:
public class VoMultiBoboBrowser extends MultiBoboBrowser {
//根据传进来的BoboIndexReader,构造出 protected final Browsable[] _subBrowsers;
public VoMultiBoboBrowser(Browsable[] browsers) throws IOException {
super(browsers);
}
public static Browsable[] createBrowsables(BoboIndexReader reader)
{
List<IndexReader> readerList = new ArrayList<IndexReader>();
ReaderUtil.gatherSubReaders(readerList, reader);
IndexReader[] subReaders = (IndexReader[])readerList.toArray(new IndexReader[readerList.size()]);
if(subReaders == null || subReaders.length == 0)
{
return new Browsable[]{ new VoBoboSubBrowser(reader) };
}
else
{
Browsable[] subBrowsables = new Browsable[subReaders.length];
for(int i = 0; i < subReaders.length; i++)
{
subBrowsables[i] = new VoBoboSubBrowser((BoboIndexReader)subReaders[i]);
}
return subBrowsables;
}
}
public static Browsable[] createBrowsables(List<BoboIndexReader> readerList){
List<Browsable> browsableList = new ArrayList<Browsable>();
for (BoboIndexReader boboReader : readerList){
Browsable[] sub = createBrowsables(boboReader);
browsableList.addAll(Arrays.asList(sub));
}
return browsableList.toArray(new Browsable[browsableList.size()]);
}
//这儿应该使用VoSortCollectorImpl
@Override
public SortCollector getSortCollector(SortField[] sort, Query q, int offset, int count, boolean fetchStoredFields, boolean forceScoring) {
if (_subBrowsers.length == 1) {
return _subBrowsers[0].getSortCollector(sort, q, offset, count, fetchStoredFields, forceScoring);
}
//return SortCollector.buildSortCollector(this, q, sort, offset, count, forceScoring, fetchStoredFields);
return VoMultiBoboBrowser.buildSortCollector(this, q, sort, offset, count, forceScoring, fetchStoredFields);
}
public static SortCollector buildSortCollector(Browsable browser,Query q,SortField[] sort,int offset,int count,boolean forceScoring,boolean fetchStoredFields){
......
return new VoSortCollectorImpl(compSource, sort, browser, offset, count, doScoring, fetchStoredFields);
}}
[b]4)在BoboBrowseServiceImpl.java中,使用VoMultiBoboBrowser[/b]
细节需要修改,暂时结束。