mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Full-text search: Add searcher_type
This commit is contained in:
parent
4360e42e95
commit
ab1b9f7509
@ -17,5 +17,6 @@ package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs; import gplx.*; import g
|
|||||||
import gplx.xowa.addons.wikis.fulltexts.searchers.caches.*;
|
import gplx.xowa.addons.wikis.fulltexts.searchers.caches.*;
|
||||||
import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.uis.*;
|
import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.uis.*;
|
||||||
public interface Xofulltext_searcher {
|
public interface Xofulltext_searcher {
|
||||||
|
boolean Type_is_lucene();
|
||||||
void Search(Xofulltext_searcher_ui ui, Xow_wiki wiki, Xofulltext_cache_qry qry, Xofulltext_args_qry qry_args, Xofulltext_args_wiki wiki_args);
|
void Search(Xofulltext_searcher_ui ui, Xow_wiki wiki, Xofulltext_cache_qry qry, Xofulltext_args_qry qry_args, Xofulltext_args_wiki wiki_args);
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ public class Xofulltext_searcher__brute implements Xofulltext_searcher {
|
|||||||
private final Xofulltext_finder_mgr finder = new Xofulltext_finder_mgr();
|
private final Xofulltext_finder_mgr finder = new Xofulltext_finder_mgr();
|
||||||
private final Xofulltext_finder_cbk__eval cbk_eval = new Xofulltext_finder_cbk__eval();
|
private final Xofulltext_finder_cbk__eval cbk_eval = new Xofulltext_finder_cbk__eval();
|
||||||
private final Xofulltext_finder_cbk__highlight cbk_highlight = new Xofulltext_finder_cbk__highlight();
|
private final Xofulltext_finder_cbk__highlight cbk_highlight = new Xofulltext_finder_cbk__highlight();
|
||||||
|
public boolean Type_is_lucene() {return false;}
|
||||||
public void Search(Xofulltext_searcher_ui ui, Xow_wiki wiki, Xofulltext_cache_qry qry, Xofulltext_args_qry args, Xofulltext_args_wiki wiki_args) {
|
public void Search(Xofulltext_searcher_ui ui, Xow_wiki wiki, Xofulltext_cache_qry qry, Xofulltext_args_qry args, Xofulltext_args_wiki wiki_args) {
|
||||||
// get pages from db
|
// get pages from db
|
||||||
Db_conn page_conn = wiki.Data__core_mgr().Tbl__page().Conn();
|
Db_conn page_conn = wiki.Data__core_mgr().Tbl__page().Conn();
|
||||||
|
@ -24,6 +24,7 @@ import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.uis.*;
|
|||||||
import gplx.xowa.addons.wikis.fulltexts.searchers.caches.*;
|
import gplx.xowa.addons.wikis.fulltexts.searchers.caches.*;
|
||||||
public class Xofulltext_searcher__lucene implements Xofulltext_searcher {
|
public class Xofulltext_searcher__lucene implements Xofulltext_searcher {
|
||||||
private final Gflucene_searcher_mgr searcher = new Gflucene_searcher_mgr();
|
private final Gflucene_searcher_mgr searcher = new Gflucene_searcher_mgr();
|
||||||
|
public boolean Type_is_lucene() {return true;}
|
||||||
public void Search(Xofulltext_searcher_ui ui, Xow_wiki wiki, Xofulltext_cache_qry qry, Xofulltext_args_qry args, Xofulltext_args_wiki wiki_args) {
|
public void Search(Xofulltext_searcher_ui ui, Xow_wiki wiki, Xofulltext_cache_qry qry, Xofulltext_args_qry args, Xofulltext_args_wiki wiki_args) {
|
||||||
// create lists
|
// create lists
|
||||||
Ordered_hash full_list = Ordered_hash_.New();
|
Ordered_hash full_list = Ordered_hash_.New();
|
||||||
|
@ -25,9 +25,10 @@ public class Xofulltext_searcher_ui {
|
|||||||
this.cbk_mgr = cbk_mgr;
|
this.cbk_mgr = cbk_mgr;
|
||||||
this.cbk_trg = cbk_trg;
|
this.cbk_trg = cbk_trg;
|
||||||
}
|
}
|
||||||
public void Send_wiki_add(byte[] wiki, int rng_bgn, int rng_end) {
|
public void Send_wiki_add(boolean type_is_lucene, byte[] wiki, int rng_bgn, int rng_end) {
|
||||||
cbk_mgr.Send_json(cbk_trg, "xo.fulltext_searcher.results__wiki__add__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
cbk_mgr.Send_json(cbk_trg, "xo.fulltext_searcher.results__wiki__add__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||||
.Add_bry("wiki", wiki)
|
.Add_bry("wiki", wiki)
|
||||||
|
.Add_bool("type_is_lucene", type_is_lucene)
|
||||||
.Add_int("rng_bgn", rng_bgn + List_adp_.Base1)
|
.Add_int("rng_bgn", rng_bgn + List_adp_.Base1)
|
||||||
.Add_int("rng_end", rng_end)
|
.Add_int("rng_end", rng_end)
|
||||||
);
|
);
|
||||||
|
@ -84,7 +84,8 @@ class Xofulltext_searcher_svc implements Gfo_invk {
|
|||||||
// get wiki and notify
|
// get wiki and notify
|
||||||
byte[] wiki_domain = wiki_args.wiki;
|
byte[] wiki_domain = wiki_args.wiki;
|
||||||
Xow_wiki wiki = app.Wiki_mgri().Get_by_or_make_init_y(wiki_domain);
|
Xow_wiki wiki = app.Wiki_mgri().Get_by_or_make_init_y(wiki_domain);
|
||||||
ui.Send_wiki_add(wiki_domain, wiki_args.bgn, wiki_args.end());
|
Xofulltext_searcher searcher = Get_searcher(wiki);
|
||||||
|
ui.Send_wiki_add(searcher.Type_is_lucene(), wiki_domain, wiki_args.bgn, wiki_args.end());
|
||||||
|
|
||||||
// try to get from cache
|
// try to get from cache
|
||||||
byte[] qry_key = args.Qry_key(wiki_domain, wiki_args.ns_ids);
|
byte[] qry_key = args.Qry_key(wiki_domain, wiki_args.ns_ids);
|
||||||
@ -107,8 +108,6 @@ class Xofulltext_searcher_svc implements Gfo_invk {
|
|||||||
}
|
}
|
||||||
args.qry_id = qry_id;
|
args.qry_id = qry_id;
|
||||||
|
|
||||||
// do search
|
|
||||||
Xofulltext_searcher searcher = Get_searcher(wiki);
|
|
||||||
searcher.Search(ui, wiki, qry, args, wiki_args);
|
searcher.Search(ui, wiki, qry, args, wiki_args);
|
||||||
ui.Send_done();
|
ui.Send_done();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user