1
0
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:
gnosygnu 2017-03-22 19:00:44 -04:00
parent 4360e42e95
commit ab1b9f7509
5 changed files with 7 additions and 4 deletions

View File

@ -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);
} }

View File

@ -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();

View File

@ -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();

View File

@ -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)
); );

View File

@ -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();
} }