mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Full-text search: Add lucene indexer
This commit is contained in:
parent
ae9d0fccd3
commit
77de7215ce
@ -30,8 +30,8 @@ public class Xoa_app_ {
|
||||
}
|
||||
}
|
||||
public static final String Name = "xowa";
|
||||
public static final int Version_id = 518;
|
||||
public static final String Version = "4.4.0.1703";
|
||||
public static final int Version_id = 519;
|
||||
public static final String Version = "4.4.1.1703";
|
||||
public static String Build_date = "2012-12-30 00:00:00";
|
||||
public static String Build_date_fmt = "yyyy-MM-dd HH:mm:ss";
|
||||
public static String Op_sys_str;
|
||||
|
@ -71,7 +71,7 @@ public class Xoax_addon_mgr {
|
||||
, new gplx.xowa.addons.apps.cfgs .Xoa_cfg_addon()
|
||||
, new gplx.xowa.addons.apps.updates .Xoa_update_addon()
|
||||
, new gplx.xowa.addons.apps.maints.sql_execs .Xosql_exec_addon()
|
||||
, new gplx.xowa.addons.wikis.searchs.fulltexts .Xosearch_fulltext_addon()
|
||||
, new gplx.xowa.addons.wikis.fulltexts .Xosearch_fulltext_addon()
|
||||
|
||||
// jsons
|
||||
);
|
||||
|
@ -18,7 +18,7 @@ import gplx.core.threads.*; import gplx.core.threads.utils.*;
|
||||
import gplx.core.caches.*; import gplx.xowa.wikis.caches.*;
|
||||
import gplx.xowa.addons.bldrs.mass_parses.parses.wkrs.*; import gplx.xowa.addons.bldrs.mass_parses.dbs.*; import gplx.xowa.addons.bldrs.mass_parses.parses.pools.*; import gplx.xowa.addons.bldrs.mass_parses.parses.utls.*;
|
||||
import gplx.xowa.addons.bldrs.wmdumps.imglinks.*;
|
||||
import gplx.xowa.addons.wikis.searchs.fulltexts.indexers.*;
|
||||
import gplx.xowa.addons.wikis.fulltexts.indexers.bldrs.*;
|
||||
public class Xomp_parse_mgr {
|
||||
private Gfo_countdown_latch latch;
|
||||
public Xomp_parse_mgr_cfg Cfg() {return cfg;} private final Xomp_parse_mgr_cfg cfg = new Xomp_parse_mgr_cfg();
|
||||
@ -60,7 +60,7 @@ public class Xomp_parse_mgr {
|
||||
Xomp_ns_ord_mgr ns_ord_mgr = new Xomp_ns_ord_mgr(Int_.Ary_parse(mgr_db.Tbl__cfg().Select_str("", Xomp_parse_wkr.Cfg__ns_ids), "|"));
|
||||
|
||||
// init indexer
|
||||
Xosearch_indexer indexer = cfg.Indexer_enabled() ? new Xosearch_indexer() : null;
|
||||
Xofulltext_indexer_wkr indexer = cfg.Indexer_enabled() ? new Xofulltext_indexer_wkr() : null;
|
||||
if (indexer != null) indexer.Init(wiki);
|
||||
|
||||
// init parse_wkrs
|
||||
|
@ -19,7 +19,7 @@ import gplx.xowa.files.origs.*;
|
||||
import gplx.xowa.htmls.core.bldrs.*;
|
||||
import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*;
|
||||
import gplx.xowa.addons.bldrs.mass_parses.parses.mgrs.*; import gplx.xowa.addons.bldrs.mass_parses.parses.utls.*; import gplx.xowa.addons.bldrs.mass_parses.parses.*; import gplx.xowa.addons.bldrs.mass_parses.parses.pools.*;
|
||||
import gplx.xowa.addons.wikis.searchs.fulltexts.indexers.*;
|
||||
import gplx.xowa.addons.wikis.fulltexts.indexers.bldrs.*;
|
||||
public class Xomp_parse_wkr implements Gfo_invk {
|
||||
// mgr vars
|
||||
private final Xomp_parse_mgr mgr;
|
||||
@ -40,14 +40,14 @@ public class Xomp_parse_wkr implements Gfo_invk {
|
||||
private final int uid;
|
||||
private Xomp_wkr_db wkr_db;
|
||||
|
||||
private final Xosearch_indexer indexer;
|
||||
private final Xofulltext_indexer_wkr indexer;
|
||||
|
||||
private final List_adp list = List_adp_.New(); private int list_idx = 0, list_len = 0;
|
||||
private int done_count; private long done_time;
|
||||
public Xomp_parse_wkr(Xomp_parse_mgr mgr, Xomp_parse_mgr_cfg cfg
|
||||
, Xomp_mgr_db mgr_db, Xomp_page_pool page_pool
|
||||
, Xomp_prog_mgr prog_mgr, Xof_orig_wkr file_orig_wkr, Xomp_ns_ord_mgr ns_ord_mgr
|
||||
, Xowe_wiki wiki, Xosearch_indexer indexer, int uid) {
|
||||
, Xowe_wiki wiki, Xofulltext_indexer_wkr indexer, int uid) {
|
||||
// mgr vars
|
||||
this.mgr = mgr; this.mgr_db = mgr_db;
|
||||
this.page_pool = page_pool; this.prog_mgr = prog_mgr; this.file_orig_wkr = file_orig_wkr;
|
||||
|
@ -13,23 +13,25 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*;
|
||||
import gplx.xowa.bldrs.wkrs.*;
|
||||
import gplx.xowa.specials.*; import gplx.xowa.htmls.bridges.*;
|
||||
public class Xosearch_fulltext_addon implements Xoax_addon_itm, Xoax_addon_itm__special, Xoax_addon_itm__json, Xoax_addon_itm__bldr {
|
||||
public Xob_cmd[] Bldr_cmds() {
|
||||
return new Xob_cmd[]
|
||||
{ gplx.xowa.addons.wikis.searchs.fulltexts.indexers.Xosearch_indexer_cmd.Prototype
|
||||
{ gplx.xowa.addons.wikis.fulltexts.indexers.bldrs.Xofulltext_indexer_cmd.Prototype
|
||||
};
|
||||
}
|
||||
public Xow_special_page[] Special_pages() {
|
||||
return new Xow_special_page[]
|
||||
{ gplx.xowa.addons.wikis.searchs.fulltexts.specials.Xosearch_fulltext_special.Prototype
|
||||
{ gplx.xowa.addons.wikis.fulltexts.searchers.specials.Xofulltext_searcher_special.Prototype
|
||||
, gplx.xowa.addons.wikis.fulltexts.indexers.specials.Xofulltext_indexer_special.Prototype
|
||||
};
|
||||
}
|
||||
public Bridge_cmd_itm[] Json_cmds() {
|
||||
return new Bridge_cmd_itm[]
|
||||
{ gplx.xowa.addons.wikis.searchs.fulltexts.svcs.Xosearch_fulltext_bridge.Prototype
|
||||
{ gplx.xowa.addons.wikis.fulltexts.searchers.svcs.Xofulltext_searcher_bridge.Prototype
|
||||
, gplx.xowa.addons.wikis.fulltexts.indexers.svcs.Xofulltext_indexer_bridge.Prototype
|
||||
};
|
||||
}
|
||||
|
@ -13,16 +13,16 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.indexers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.indexers.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.indexers.*;
|
||||
import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*;
|
||||
public class Xosearch_indexer_cmd extends Xob_cmd__base {
|
||||
public Xosearch_indexer_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);}
|
||||
public class Xofulltext_indexer_cmd extends Xob_cmd__base {
|
||||
public Xofulltext_indexer_cmd(Xob_bldr bldr, Xowe_wiki wiki) {super(bldr, wiki);}
|
||||
@Override public void Cmd_run() {
|
||||
wiki.Init_assert();
|
||||
new Xosearch_indexer_mgr().Exec(wiki);
|
||||
new Xofulltext_indexer_mgr().Exec(wiki, null);
|
||||
}
|
||||
|
||||
@Override public String Cmd_key() {return "search.index";}
|
||||
public static final Xob_cmd Prototype = new Xosearch_indexer_cmd(null, null);
|
||||
@Override public Xob_cmd Cmd_clone(Xob_bldr bldr, Xowe_wiki wiki) {return new Xosearch_indexer_cmd(bldr, wiki);}
|
||||
public static final Xob_cmd Prototype = new Xofulltext_indexer_cmd(null, null);
|
||||
@Override public Xob_cmd Cmd_clone(Xob_bldr bldr, Xowe_wiki wiki) {return new Xofulltext_indexer_cmd(bldr, wiki);}
|
||||
}
|
@ -13,20 +13,20 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.indexers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.indexers.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.indexers.*;
|
||||
import gplx.dbs.*;
|
||||
import gplx.xowa.htmls.*;
|
||||
import gplx.xowa.wikis.data.*;
|
||||
import gplx.xowa.htmls.core.dbs.*;
|
||||
import gplx.xowa.addons.wikis.searchs.fulltexts.indexers.*;
|
||||
class Xosearch_indexer_mgr {
|
||||
public void Exec(Xowe_wiki wiki) {
|
||||
import gplx.xowa.addons.wikis.fulltexts.indexers.svcs.*;
|
||||
public class Xofulltext_indexer_mgr {
|
||||
public void Exec(Xowe_wiki wiki, Xofulltext_indexer_ui ui) {
|
||||
Xow_db_file core_db = wiki.Data__core_mgr().Db__core();
|
||||
gplx.xowa.wikis.data.tbls.Xowd_page_tbl page_tbl = core_db.Tbl__page();
|
||||
|
||||
Xoh_page hpg = new Xoh_page();
|
||||
|
||||
Xosearch_indexer indexer = new Xosearch_indexer();
|
||||
Xofulltext_indexer_wkr indexer = new Xofulltext_indexer_wkr();
|
||||
indexer.Init(wiki);
|
||||
|
||||
Db_conn conn = page_tbl.Conn();
|
||||
@ -53,8 +53,11 @@ class Xosearch_indexer_mgr {
|
||||
byte[] html_text = wiki.Html__hdump_mgr().Load_mgr().Parse(hpg, hpg.Db().Html().Zip_tid(), hpg.Db().Html().Hzip_tid(), hpg.Db().Html().Html_bry());
|
||||
|
||||
indexer.Index(page_id, page_score, page_ttl.Page_txt(), html_text);
|
||||
if ((++count % 10000) == 0)
|
||||
if ((++count % 10000) == 0) {
|
||||
Gfo_usr_dlg_.Instance.Prog_many("", "", "indexing page: ~{0}", count);
|
||||
if (ui != null)
|
||||
ui.Send_prog(Datetime_now.Get().XtoStr_fmt_yyyy_MM_dd_HH_mm_ss() + ": indexing page: " + count);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Gfo_usr_dlg_.Instance.Warn_many("", "", "err: ~{0}", Err_.Message_gplx_log(e));
|
||||
}
|
@ -13,9 +13,9 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.indexers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.indexers.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.indexers.*;
|
||||
import gplx.gflucene.*;
|
||||
public class Xosearch_indexer {
|
||||
public class Xofulltext_indexer_wkr {
|
||||
private final Gflucene_index_bldr index_wtr = new Gflucene_index_bldr();
|
||||
public void Init(Xow_wiki wiki) {
|
||||
Io_url search_dir = wiki.Fsys_mgr().Root_dir().GenSubDir_nest("data", "search");
|
@ -0,0 +1,34 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
||||
|
||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
||||
or alternatively under the terms of the Apache License Version 2.0.
|
||||
|
||||
You may use XOWA according to either of these licenses as is most appropriate
|
||||
for your project on a case-by-case basis.
|
||||
|
||||
The terms of each license can be found in the source code repository:
|
||||
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.fulltexts.indexers.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.indexers.*;
|
||||
import gplx.langs.mustaches.*;
|
||||
public class Xofulltext_indexer_doc implements Mustache_doc_itm {
|
||||
private final byte[] wikis_bry;
|
||||
public Xofulltext_indexer_doc
|
||||
( byte[] wikis_bry) {
|
||||
this.wikis_bry = wikis_bry;
|
||||
}
|
||||
public boolean Mustache__write(String key, Mustache_bfr bfr) {
|
||||
if (String_.Eq(key, "wikis"))
|
||||
bfr.Add_bry(wikis_bry);
|
||||
else
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
public Mustache_doc_itm[] Mustache__subs(String key) {
|
||||
return Mustache_doc_itm_.Ary__empty;
|
||||
}
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
||||
|
||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
||||
or alternatively under the terms of the Apache License Version 2.0.
|
||||
|
||||
You may use XOWA according to either of these licenses as is most appropriate
|
||||
for your project on a case-by-case basis.
|
||||
|
||||
The terms of each license can be found in the source code repository:
|
||||
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.fulltexts.indexers.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.indexers.*;
|
||||
import gplx.xowa.specials.*; import gplx.langs.mustaches.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*;
|
||||
import gplx.dbs.*;
|
||||
class Xofulltext_indexer_html extends Xow_special_wtr__base {
|
||||
private final byte[] wikis_bry;
|
||||
public Xofulltext_indexer_html
|
||||
( byte[] wikis_bry) {
|
||||
this.wikis_bry = wikis_bry;
|
||||
}
|
||||
@Override protected Io_url Get_addon_dir(Xoa_app app) {return Addon_dir(app);}
|
||||
@Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xofulltext_indexer.template.html");}
|
||||
@Override protected Mustache_doc_itm Bld_mustache_root(Xoa_app app) {
|
||||
return new Xofulltext_indexer_doc(wikis_bry);
|
||||
}
|
||||
@Override protected void Bld_tags(Xoa_app app, Io_url addon_dir, Xopage_html_data page_data) {
|
||||
Xopg_tag_mgr head_tags = page_data.Head_tags();
|
||||
Xopg_tag_wtr_.Add__xoelem (head_tags, app.Fsys_mgr().Http_root());
|
||||
|
||||
Xopg_tag_wtr_.Add__xocss (head_tags, app.Fsys_mgr().Http_root());
|
||||
Xopg_tag_wtr_.Add__xohelp (head_tags, app.Fsys_mgr().Http_root());
|
||||
Xopg_tag_wtr_.Add__xolog (head_tags, app.Fsys_mgr().Http_root());
|
||||
Xopg_tag_wtr_.Add__xoajax (head_tags, app.Fsys_mgr().Http_root(), app);
|
||||
Xopg_tag_wtr_.Add__jquery (head_tags, app.Fsys_mgr().Http_root());
|
||||
Xopg_tag_wtr_.Add__xonotify (head_tags, app.Fsys_mgr().Http_root());
|
||||
Xopg_alertify_.Add_tags (head_tags, app.Fsys_mgr().Http_root());
|
||||
|
||||
head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xofulltext_indexer.css")));
|
||||
head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("bin", "xofulltext_indexer.js")));
|
||||
|
||||
page_data.Js_enabled_y_();
|
||||
}
|
||||
public static Io_url Addon_dir(Xoa_app app) {
|
||||
return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "wiki", "fulltext", "indexer");
|
||||
}
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
||||
|
||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
||||
or alternatively under the terms of the Apache License Version 2.0.
|
||||
|
||||
You may use XOWA according to either of these licenses as is most appropriate
|
||||
for your project on a case-by-case basis.
|
||||
|
||||
The terms of each license can be found in the source code repository:
|
||||
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.fulltexts.indexers.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.indexers.*;
|
||||
import gplx.xowa.specials.*; import gplx.core.net.qargs.*;
|
||||
import gplx.xowa.addons.apps.cfgs.*;
|
||||
public class Xofulltext_indexer_special implements Xow_special_page {
|
||||
public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) {
|
||||
// get qry if any
|
||||
Gfo_qarg_mgr url_args = new Gfo_qarg_mgr().Init(url.Qargs_ary());
|
||||
byte[] wikis_bry = url_args.Read_bry_or("wikis", Bry_.Empty);
|
||||
|
||||
// get options and create page
|
||||
// Xocfg_mgr cfg_mgr = wiki.App().Cfg();
|
||||
new Xofulltext_indexer_html
|
||||
( wikis_bry
|
||||
).Bld_page_by_mustache(wiki.App(), page, this);
|
||||
}
|
||||
Xofulltext_indexer_special(Xow_special_meta special__meta) {this.special__meta = special__meta;}
|
||||
public Xow_special_meta Special__meta() {return special__meta;} private final Xow_special_meta special__meta;
|
||||
public Xow_special_page Special__clone() {return this;}
|
||||
public static final Xow_special_page Prototype = new Xofulltext_indexer_special(Xow_special_meta.New_xo("XowaSearchBuilder", "Indexer"));
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
||||
|
||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
||||
or alternatively under the terms of the Apache License Version 2.0.
|
||||
|
||||
You may use XOWA according to either of these licenses as is most appropriate
|
||||
for your project on a case-by-case basis.
|
||||
|
||||
The terms of each license can be found in the source code repository:
|
||||
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.fulltexts.indexers.svcs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.indexers.*;
|
||||
import gplx.langs.jsons.*;
|
||||
import gplx.xowa.htmls.bridges.*;
|
||||
public class Xofulltext_indexer_bridge implements Bridge_cmd_itm {
|
||||
private Xofulltext_indexer_svc svc;
|
||||
public void Init_by_app(Xoa_app app) {
|
||||
this.svc = new Xofulltext_indexer_svc(app);
|
||||
}
|
||||
public String Exec(Json_nde data) {
|
||||
byte proc_id = proc_hash.Get_as_byte_or(data.Get_as_bry_or(Bridge_cmd_mgr.Msg__proc, null), Byte_ascii.Max_7_bit);
|
||||
Json_nde args = data.Get_kv(Bridge_cmd_mgr.Msg__args).Val_as_nde();
|
||||
switch (proc_id) {
|
||||
case Proc__index: svc.Index(args); break;
|
||||
default: throw Err_.new_unhandled_default(proc_id);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
private static final byte Proc__index = 0;
|
||||
private static final Hash_adp_bry proc_hash = Hash_adp_bry.cs()
|
||||
.Add_str_byte("index" , Proc__index)
|
||||
;
|
||||
|
||||
public byte[] Key() {return BRIDGE_KEY;} public static final byte[] BRIDGE_KEY = Bry_.new_a7("xowa.wiki.fulltext.indexer");
|
||||
public static final Xofulltext_indexer_bridge Prototype = new Xofulltext_indexer_bridge(); Xofulltext_indexer_bridge() {}
|
||||
}
|
@ -0,0 +1,80 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
||||
|
||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
||||
or alternatively under the terms of the Apache License Version 2.0.
|
||||
|
||||
You may use XOWA according to either of these licenses as is most appropriate
|
||||
for your project on a case-by-case basis.
|
||||
|
||||
The terms of each license can be found in the source code repository:
|
||||
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.fulltexts.indexers.svcs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.indexers.*;
|
||||
import gplx.core.btries.*;
|
||||
import gplx.langs.jsons.*;
|
||||
import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*;
|
||||
import gplx.xowa.guis.cbks.*;
|
||||
import gplx.xowa.addons.apps.cfgs.*;
|
||||
import gplx.xowa.addons.wikis.fulltexts.indexers.specials.*;
|
||||
import gplx.xowa.addons.wikis.fulltexts.indexers.bldrs.*;
|
||||
class Xofulltext_indexer_svc implements Gfo_invk {
|
||||
private final Xoa_app app;
|
||||
private final Xog_cbk_trg cbk_trg = Xog_cbk_trg.New(Xofulltext_indexer_special.Prototype.Special__meta().Ttl_bry());
|
||||
public Xofulltext_indexer_svc(Xoa_app app) {
|
||||
this.app = app;
|
||||
}
|
||||
public void Index(Json_nde args) {
|
||||
// create args
|
||||
byte[] wikis_bry = args.Get_as_bry("wikis");
|
||||
Xofulltext_indexer_args indexer_args = new Xofulltext_indexer_args(wikis_bry);
|
||||
|
||||
// launch thread
|
||||
gplx.core.threads.Thread_adp_.Start_by_val("index", Cancelable_.Never, this, Invk__index, indexer_args);
|
||||
}
|
||||
private void Index(Xofulltext_indexer_args args) {
|
||||
// loop wikis
|
||||
byte[][] domain_ary = Bry_split_.Split(args.wikis, Byte_ascii.Pipe);
|
||||
for (byte[] domain : domain_ary) {
|
||||
// get wiki
|
||||
Xow_wiki wiki = app.Wiki_mgri().Get_by_or_make_init_n(domain);
|
||||
if (!Io_mgr.Instance.ExistsDir(wiki.Fsys_mgr().Root_dir())) {
|
||||
app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.fulltext_indexer.status__note__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||
.Add_str("note", Datetime_now.Get().XtoStr_fmt_yyyy_MM_dd_HH_mm_ss() + ": wiki does not exist: " + String_.new_u8(domain)));
|
||||
continue;
|
||||
}
|
||||
|
||||
wiki.Init_by_wiki();
|
||||
Io_url search_dir = wiki.Fsys_mgr().Root_dir().GenSubDir_nest("data", "search");
|
||||
if (Io_mgr.Instance.ExistsDir(search_dir)) {
|
||||
app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.fulltext_indexer.status__note__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||
.Add_str("note", Datetime_now.Get().XtoStr_fmt_yyyy_MM_dd_HH_mm_ss() + ": search dir already exists; please delete it manually before reindexing; " + String_.new_u8(domain)));
|
||||
continue;
|
||||
}
|
||||
|
||||
app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.fulltext_indexer.status__note__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||
.Add_str("note", Datetime_now.Get().XtoStr_fmt_yyyy_MM_dd_HH_mm_ss() + ": wiki index started: " + String_.new_u8(domain)));
|
||||
|
||||
new Xofulltext_indexer_mgr().Exec((Xowe_wiki)wiki, new Xofulltext_indexer_ui(app.Gui__cbk_mgr(), cbk_trg));
|
||||
|
||||
app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.fulltext_indexer.status__note__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||
.Add_str("note", Datetime_now.Get().XtoStr_fmt_yyyy_MM_dd_HH_mm_ss() + ": wiki index ended: " + String_.new_u8(domain)));
|
||||
}
|
||||
}
|
||||
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk__index)) this.Index((Xofulltext_indexer_args)m.ReadObj("v"));
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
return this;
|
||||
}
|
||||
private static final String Invk__index = "index";
|
||||
}
|
||||
class Xofulltext_indexer_args {
|
||||
public byte[] wikis;
|
||||
public Xofulltext_indexer_args(byte[] wikis) {
|
||||
this.wikis = wikis;
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
||||
|
||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
||||
or alternatively under the terms of the Apache License Version 2.0.
|
||||
|
||||
You may use XOWA according to either of these licenses as is most appropriate
|
||||
for your project on a case-by-case basis.
|
||||
|
||||
The terms of each license can be found in the source code repository:
|
||||
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.fulltexts.indexers.svcs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.indexers.*;
|
||||
import gplx.xowa.guis.cbks.*;
|
||||
public class Xofulltext_indexer_ui {
|
||||
private final Xog_cbk_mgr cbk_mgr;
|
||||
private final Xog_cbk_trg cbk_trg;
|
||||
public Xofulltext_indexer_ui(Xog_cbk_mgr cbk_mgr, Xog_cbk_trg cbk_trg) {
|
||||
this.cbk_mgr = cbk_mgr;
|
||||
this.cbk_trg = cbk_trg;
|
||||
}
|
||||
public void Send_prog(String prog) {
|
||||
cbk_mgr.Send_json(cbk_trg, "xo.fulltext_indexer.status__prog__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||
.Add_str("prog", prog)
|
||||
);
|
||||
}
|
||||
}
|
@ -13,9 +13,9 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
|
||||
public class Xosearch_cache_line {
|
||||
public Xosearch_cache_line(int line_seq, byte[] line_html) {
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*;
|
||||
public class Xofulltext_cache_line {
|
||||
public Xofulltext_cache_line(int line_seq, byte[] line_html) {
|
||||
this.line_seq = line_seq;
|
||||
this.line_html = line_html;
|
||||
}
|
@ -13,8 +13,8 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
|
||||
public class Xosearch_cache_mgr {
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*;
|
||||
public class Xofulltext_cache_mgr {
|
||||
private final Ordered_hash qry_hash = Ordered_hash_.New();
|
||||
public int Next_qry_id() {return next_qry_id++;} private int next_qry_id;
|
||||
public void Clear() {
|
||||
@ -22,46 +22,46 @@ public class Xosearch_cache_mgr {
|
||||
}
|
||||
public void Add(int query_id, byte[] query, byte[] wiki_bry, int page_seq, int page_id, int line_seq, byte[] line_html) {
|
||||
// get qry
|
||||
Xosearch_cache_qry qry = (Xosearch_cache_qry)qry_hash.Get_by(query_id);
|
||||
Xofulltext_cache_qry qry = (Xofulltext_cache_qry)qry_hash.Get_by(query_id);
|
||||
if (qry == null) {
|
||||
qry = new Xosearch_cache_qry(query_id, query);
|
||||
qry = new Xofulltext_cache_qry(query_id, query);
|
||||
qry_hash.Add(query_id, qry);
|
||||
}
|
||||
|
||||
// get wiki
|
||||
Xosearch_cache_wiki wiki = (Xosearch_cache_wiki)qry.Wikis().Get_by(wiki_bry);
|
||||
Xofulltext_cache_wiki wiki = (Xofulltext_cache_wiki)qry.Wikis().Get_by(wiki_bry);
|
||||
if (wiki == null) {
|
||||
wiki = new Xosearch_cache_wiki(wiki_bry);
|
||||
wiki = new Xofulltext_cache_wiki(wiki_bry);
|
||||
qry.Wikis().Add(wiki_bry, wiki);
|
||||
}
|
||||
|
||||
// get page
|
||||
Xosearch_cache_page page = (Xosearch_cache_page)wiki.Pages().Get_by(page_id);
|
||||
Xofulltext_cache_page page = (Xofulltext_cache_page)wiki.Pages().Get_by(page_id);
|
||||
if (page == null) {
|
||||
page = new Xosearch_cache_page(page_id, page_seq);
|
||||
page = new Xofulltext_cache_page(page_id, page_seq);
|
||||
wiki.Pages().Add(page_id, page);
|
||||
}
|
||||
|
||||
// add line
|
||||
Xosearch_cache_line line = new Xosearch_cache_line(line_seq, line_html);
|
||||
Xofulltext_cache_line line = new Xofulltext_cache_line(line_seq, line_html);
|
||||
page.Lines().Add(line);
|
||||
}
|
||||
public Object Get_pages_rng(int qry_id, byte[] wiki, int page_seq_bgn, int page_seq_end) {
|
||||
return null;
|
||||
}
|
||||
public Xosearch_cache_line[] Get_lines_rest(int qry_id, byte[] wiki_bry, int page_id) {
|
||||
public Xofulltext_cache_line[] Get_lines_rest(int qry_id, byte[] wiki_bry, int page_id) {
|
||||
// get page
|
||||
Xosearch_cache_qry qry = (Xosearch_cache_qry)qry_hash.Get_by(qry_id);
|
||||
Xosearch_cache_wiki wiki = (Xosearch_cache_wiki)qry.Wikis().Get_by(wiki_bry);
|
||||
Xosearch_cache_page page = (Xosearch_cache_page)wiki.Pages().Get_by(page_id);
|
||||
Xofulltext_cache_qry qry = (Xofulltext_cache_qry)qry_hash.Get_by(qry_id);
|
||||
Xofulltext_cache_wiki wiki = (Xofulltext_cache_wiki)qry.Wikis().Get_by(wiki_bry);
|
||||
Xofulltext_cache_page page = (Xofulltext_cache_page)wiki.Pages().Get_by(page_id);
|
||||
|
||||
// loop lines from 1 to n; note "1" b/c results will always show at least 1st line
|
||||
List_adp list = List_adp_.New();
|
||||
int lines_len = page.Lines().Len();
|
||||
for (int i = 1; i < lines_len; i++) {
|
||||
Xosearch_cache_line line = (Xosearch_cache_line)page.Lines().Get_at(i);
|
||||
Xofulltext_cache_line line = (Xofulltext_cache_line)page.Lines().Get_at(i);
|
||||
list.Add(line);
|
||||
}
|
||||
return (Xosearch_cache_line[])list.To_ary_and_clear(Xosearch_cache_line.class);
|
||||
return (Xofulltext_cache_line[])list.To_ary_and_clear(Xofulltext_cache_line.class);
|
||||
}
|
||||
}
|
@ -13,9 +13,9 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
|
||||
public class Xosearch_cache_page {
|
||||
public Xosearch_cache_page(int page_id, int page_seq) {
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*;
|
||||
public class Xofulltext_cache_page {
|
||||
public Xofulltext_cache_page(int page_id, int page_seq) {
|
||||
this.page_id = page_id;
|
||||
this.page_seq = page_seq;
|
||||
}
|
@ -13,9 +13,9 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
|
||||
public class Xosearch_cache_qry {
|
||||
public Xosearch_cache_qry(int id, byte[] qry) {
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*;
|
||||
public class Xofulltext_cache_qry {
|
||||
public Xofulltext_cache_qry(int id, byte[] qry) {
|
||||
this.id = id;
|
||||
this.qry = qry;
|
||||
}
|
@ -13,9 +13,9 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
|
||||
public class Xosearch_cache_wiki {
|
||||
public Xosearch_cache_wiki(byte[] wiki) {
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*;
|
||||
public class Xofulltext_cache_wiki {
|
||||
public Xofulltext_cache_wiki(byte[] wiki) {
|
||||
this.wiki = wiki;
|
||||
}
|
||||
public byte[] Wiki() {return wiki;} private final byte[] wiki;
|
@ -0,0 +1,20 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
||||
|
||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
||||
or alternatively under the terms of the Apache License Version 2.0.
|
||||
|
||||
You may use XOWA according to either of these licenses as is most appropriate
|
||||
for your project on a case-by-case basis.
|
||||
|
||||
The terms of each license can be found in the source code repository:
|
||||
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*;
|
||||
import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.uis.*;
|
||||
public interface Xofulltext_searcher {
|
||||
void Search(Xofulltext_searcher_ui ui, Xow_wiki wiki, Xofulltext_searcher_args args);
|
||||
}
|
@ -13,9 +13,9 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*;
|
||||
import gplx.langs.jsons.*;
|
||||
public class Xosearch_searcher_args {
|
||||
public class Xofulltext_searcher_args {
|
||||
public boolean case_match;
|
||||
public boolean auto_wildcard_bgn;
|
||||
public boolean auto_wildcard_end;
|
||||
@ -26,8 +26,8 @@ public class Xosearch_searcher_args {
|
||||
public byte[] query;
|
||||
public String namespaces;
|
||||
public int query_id;
|
||||
public static Xosearch_searcher_args New_by_json(Json_nde args) {
|
||||
Xosearch_searcher_args rv = new Xosearch_searcher_args();
|
||||
public static Xofulltext_searcher_args New_by_json(Json_nde args) {
|
||||
Xofulltext_searcher_args rv = new Xofulltext_searcher_args();
|
||||
rv.case_match = args.Get_as_bool_or("case_match", false);
|
||||
rv.auto_wildcard_bgn = args.Get_as_bool_or("auto_wildcard_bgn", false);
|
||||
rv.auto_wildcard_end = args.Get_as_bool_or("auto_wildcard_end", false);
|
@ -13,20 +13,20 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*;
|
||||
import gplx.dbs.*;
|
||||
import gplx.xowa.guis.cbks.*;
|
||||
import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.uis.*;
|
||||
import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.finders.*;
|
||||
import gplx.xowa.addons.wikis.searchs.fulltexts.caches.*;
|
||||
public class Xosearch_searcher__brute implements Xosearch_searcher {
|
||||
private final Xosearch_finder_mgr finder = new Xosearch_finder_mgr();
|
||||
private final Xosearch_finder_cbk__eval cbk_eval = new Xosearch_finder_cbk__eval();
|
||||
private final Xosearch_finder_cbk__highlight cbk_highlight;
|
||||
public Xosearch_searcher__brute(Xoa_app app, Xog_cbk_trg cbk_trg, Xosearch_cache_mgr cache_mgr) {
|
||||
this.cbk_highlight = new Xosearch_finder_cbk__highlight(app, cbk_trg, cache_mgr);
|
||||
import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.uis.*;
|
||||
import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.finders.*;
|
||||
import gplx.xowa.addons.wikis.fulltexts.searchers.caches.*;
|
||||
public class Xofulltext_searcher__brute implements Xofulltext_searcher {
|
||||
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__highlight cbk_highlight;
|
||||
public Xofulltext_searcher__brute(Xoa_app app, Xog_cbk_trg cbk_trg, Xofulltext_cache_mgr cache_mgr) {
|
||||
this.cbk_highlight = new Xofulltext_finder_cbk__highlight(app, cbk_trg, cache_mgr);
|
||||
}
|
||||
public void Search(Xosearch_searcher_ui ui, Xow_wiki wiki, Xosearch_searcher_args args) {
|
||||
public void Search(Xofulltext_searcher_ui ui, Xow_wiki wiki, Xofulltext_searcher_args args) {
|
||||
// get pages from db
|
||||
Db_conn page_conn = wiki.Data__core_mgr().Tbl__page().Conn();
|
||||
Db_rdr page_rdr = page_conn.Stmt_sql("SELECT * FROM page WHERE page_namespace IN (0) ORDER BY page_score DESC").Exec_select__rls_auto();
|
||||
@ -63,7 +63,7 @@ public class Xosearch_searcher__brute implements Xosearch_searcher {
|
||||
// do highlight
|
||||
if (found <= args.max_pages_per_wiki) {
|
||||
cbk_highlight.Init(args.query, args.query_id, wiki, page_id, ttl.Full_db(), args.show_all_matches);
|
||||
ui.Send_page_add(new Xosearch_searcher_page
|
||||
ui.Send_page_add(new Xofulltext_searcher_page
|
||||
( args.query_id
|
||||
, String_.new_u8(wiki_domain)
|
||||
, page_id
|
@ -13,10 +13,10 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.*;
|
||||
import gplx.xowa.guis.cbks.*;
|
||||
public interface Xosearch_finder_cbk {
|
||||
public interface Xofulltext_finder_cbk {
|
||||
byte[] Page_ttl();
|
||||
void Process_item_found(byte[] src, int hook_bgn, int hook_end, int word_bgn, int word_end, Xosearch_word_node term);
|
||||
void Process_page_done(byte[] src, Xosearch_word_node tree_root);
|
||||
void Process_item_found(byte[] src, int hook_bgn, int hook_end, int word_bgn, int word_end, Xofulltext_word_node term);
|
||||
void Process_page_done(byte[] src, Xofulltext_word_node tree_root);
|
||||
}
|
@ -13,18 +13,18 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.*;
|
||||
public class Xosearch_finder_cbk__eval implements Xosearch_finder_cbk {
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.*;
|
||||
public class Xofulltext_finder_cbk__eval implements Xofulltext_finder_cbk {
|
||||
public boolean found;
|
||||
public byte[] Page_ttl() {return page_ttl;} private byte[] page_ttl;
|
||||
public void Init(byte[] page_ttl) {
|
||||
this.found = false;
|
||||
this.page_ttl = page_ttl;
|
||||
}
|
||||
public void Process_item_found(byte[] src, int hook_bgn, int hook_end, int word_bgn, int word_end, Xosearch_word_node term) {
|
||||
public void Process_item_found(byte[] src, int hook_bgn, int hook_end, int word_bgn, int word_end, Xofulltext_word_node term) {
|
||||
term.found = true;
|
||||
}
|
||||
public void Process_page_done(byte[] src, Xosearch_word_node root) {
|
||||
public void Process_page_done(byte[] src, Xofulltext_word_node root) {
|
||||
this.found = root.Eval();
|
||||
}
|
||||
}
|
@ -13,10 +13,10 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.*;
|
||||
import org.junit.*; import gplx.core.tests.*;
|
||||
public class Xosearch_finder_cbk__eval__tst {
|
||||
private final Xosearch_finder_cbk__eval__fxt fxt = new Xosearch_finder_cbk__eval__fxt();
|
||||
public class Xofulltext_finder_cbk__eval__tst {
|
||||
private final Xofulltext_finder_cbk__eval__fxt fxt = new Xofulltext_finder_cbk__eval__fxt();
|
||||
@Test public void Exact() {
|
||||
fxt.Init__search("a");
|
||||
// y: basic match
|
||||
@ -98,14 +98,14 @@ public class Xosearch_finder_cbk__eval__tst {
|
||||
// []
|
||||
// <>
|
||||
}
|
||||
class Xosearch_finder_cbk__eval__fxt {
|
||||
class Xofulltext_finder_cbk__eval__fxt {
|
||||
private boolean case_match = false;
|
||||
private boolean auto_wildcard_bgn = false;
|
||||
private boolean auto_wildcard_end = false;
|
||||
private byte wildcard_byte = Byte_ascii.Star;
|
||||
private byte not_byte = Byte_ascii.Dash;
|
||||
private final Xosearch_finder_mgr finder = new Xosearch_finder_mgr();
|
||||
private final Xosearch_finder_cbk__eval cbk = new Xosearch_finder_cbk__eval();
|
||||
private final Xofulltext_finder_mgr finder = new Xofulltext_finder_mgr();
|
||||
private final Xofulltext_finder_cbk__eval cbk = new Xofulltext_finder_cbk__eval();
|
||||
public void Init__search(String query) {
|
||||
finder.Init(Bry_.new_u8(query), case_match, auto_wildcard_bgn, auto_wildcard_end, wildcard_byte, not_byte);
|
||||
}
|
@ -13,13 +13,13 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.*;
|
||||
import gplx.xowa.guis.cbks.*;
|
||||
import gplx.xowa.addons.wikis.searchs.fulltexts.caches.*;
|
||||
public class Xosearch_finder_cbk__highlight implements Xosearch_finder_cbk {
|
||||
import gplx.xowa.addons.wikis.fulltexts.searchers.caches.*;
|
||||
public class Xofulltext_finder_cbk__highlight implements Xofulltext_finder_cbk {
|
||||
private final Xog_cbk_trg cbk_trg;
|
||||
private final Xoa_app app;
|
||||
private final Xosearch_cache_mgr cache_mgr;
|
||||
private final Xofulltext_cache_mgr cache_mgr;
|
||||
private Xow_wiki wiki;
|
||||
private byte[] qry;
|
||||
private int qry_id;
|
||||
@ -27,7 +27,7 @@ public class Xosearch_finder_cbk__highlight implements Xosearch_finder_cbk {
|
||||
private final Bry_bfr tmp_bfr = Bry_bfr_.New();
|
||||
public int found;
|
||||
private boolean show_all_matches;
|
||||
public Xosearch_finder_cbk__highlight(Xoa_app app, Xog_cbk_trg cbk_trg, Xosearch_cache_mgr cache_mgr) {
|
||||
public Xofulltext_finder_cbk__highlight(Xoa_app app, Xog_cbk_trg cbk_trg, Xofulltext_cache_mgr cache_mgr) {
|
||||
this.app = app;
|
||||
this.cbk_trg = cbk_trg;
|
||||
this.cache_mgr = cache_mgr;
|
||||
@ -42,7 +42,7 @@ public class Xosearch_finder_cbk__highlight implements Xosearch_finder_cbk {
|
||||
this.show_all_matches = show_all_matches;
|
||||
found = 0;
|
||||
}
|
||||
public void Process_item_found(byte[] src, int hook_bgn, int hook_end, int word_bgn, int word_end, Xosearch_word_node term) {
|
||||
public void Process_item_found(byte[] src, int hook_bgn, int hook_end, int word_bgn, int word_end, Xofulltext_word_node term) {
|
||||
// if (found < max_snips_per_page) {
|
||||
// get snip bounds by finding flanking 50 chars and then expanding to word-bounds
|
||||
int snip_bgn = hook_bgn - 50;
|
||||
@ -71,7 +71,7 @@ public class Xosearch_finder_cbk__highlight implements Xosearch_finder_cbk {
|
||||
// send notification
|
||||
byte[] line_html = tmp_bfr.To_bry_and_clear();
|
||||
if (found == 0 || show_all_matches) {
|
||||
app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.search_fulltext.results__line__add__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||
app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.fulltext_searcher.results__line__add__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||
.Add_bry("wiki", wiki.Domain_bry())
|
||||
.Add_int("page_id", page_id)
|
||||
.Add_int("line", found + 1)
|
||||
@ -81,7 +81,7 @@ public class Xosearch_finder_cbk__highlight implements Xosearch_finder_cbk {
|
||||
cache_mgr.Add(qry_id, qry, wiki.Domain_bry(), -1, page_id, found, line_html);
|
||||
// }
|
||||
found++;
|
||||
app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.search_fulltext.results__page__update__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||
app.Gui__cbk_mgr().Send_json(cbk_trg, "xo.fulltext_searcher.results__page__update__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||
.Add_bry("wiki", wiki.Domain_bry())
|
||||
.Add_int("page_id", page_id)
|
||||
.Add_int("found", found)
|
||||
@ -105,5 +105,5 @@ public class Xosearch_finder_cbk__highlight implements Xosearch_finder_cbk {
|
||||
}
|
||||
}
|
||||
}
|
||||
public void Process_page_done(byte[] src, Xosearch_word_node tree_root) {}
|
||||
public void Process_page_done(byte[] src, Xofulltext_word_node tree_root) {}
|
||||
}
|
@ -13,17 +13,17 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.*;
|
||||
import gplx.xowa.guis.cbks.*;
|
||||
import gplx.core.btries.*;
|
||||
import gplx.xowa.addons.wikis.searchs.searchers.crts.*;
|
||||
public class Xosearch_finder_mgr {
|
||||
public class Xofulltext_finder_mgr {
|
||||
private Btrie_slim_mgr hook_trie;
|
||||
private Xosearch_word_node tree_root;
|
||||
private Xofulltext_word_node tree_root;
|
||||
private final Srch_crt_parser parser = new Srch_crt_parser(Srch_crt_scanner_syms.Dflt);
|
||||
private final Btrie_rv trv = new Btrie_rv();
|
||||
private final Xosearch_word_lang lang = new Xosearch_word_lang();
|
||||
private final Xosearch_word_bounds word_bounds = new Xosearch_word_bounds();
|
||||
private final Xofulltext_word_lang lang = new Xofulltext_word_lang();
|
||||
private final Xofulltext_word_bounds word_bounds = new Xofulltext_word_bounds();
|
||||
|
||||
public byte[] Query() {return query;} private byte[] query;
|
||||
public void Init(byte[] query, boolean case_match, boolean auto_wildcard_bgn, boolean auto_wildcard_end, byte wildchar_byte, byte not_byte) {
|
||||
@ -32,9 +32,9 @@ public class Xosearch_finder_mgr {
|
||||
this.hook_trie = case_match ? Btrie_slim_mgr.cs() : Btrie_slim_mgr.ci_u8();
|
||||
|
||||
// create a new tree_root for eval
|
||||
this.tree_root = Xosearch_word_node_.New_root(parser.Parse_or_invalid(query).Root, hook_trie, auto_wildcard_bgn, auto_wildcard_end, wildchar_byte, not_byte);
|
||||
this.tree_root = Xofulltext_word_node_.New_root(parser.Parse_or_invalid(query).Root, hook_trie, auto_wildcard_bgn, auto_wildcard_end, wildchar_byte, not_byte);
|
||||
}
|
||||
public void Match(byte[] src, int src_bgn, int src_end, Xosearch_finder_cbk cbk) {
|
||||
public void Match(byte[] src, int src_bgn, int src_end, Xofulltext_finder_cbk cbk) {
|
||||
// init and clear
|
||||
int cur = 0;
|
||||
tree_root.Clear();
|
||||
@ -52,7 +52,7 @@ public class Xosearch_finder_mgr {
|
||||
}
|
||||
|
||||
// current byte matches a hook; get hook and hook_end
|
||||
Xosearch_word_node hook = (Xosearch_word_node)hook_obj;
|
||||
Xofulltext_word_node hook = (Xofulltext_word_node)hook_obj;
|
||||
int hook_bgn = cur;
|
||||
int hook_end = cur + hook.word_hook.length;
|
||||
|
@ -13,8 +13,8 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.*;
|
||||
public class Xosearch_word_bounds {
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.*;
|
||||
public class Xofulltext_word_bounds {
|
||||
public int word_bgn;
|
||||
public int word_end;
|
||||
public void Init(int word_bgn, int word_end) {
|
@ -13,10 +13,10 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.*;
|
||||
import gplx.core.btries.*;
|
||||
import gplx.core.intls.*;
|
||||
public class Xosearch_word_lang {
|
||||
public class Xofulltext_word_lang {
|
||||
private final Btrie_slim_mgr ws_bgn = Btrie_slim_mgr.cs()
|
||||
.Add_many_str("\t", "\n", "\r", " ", "/", "(", ")", "[", "]", "<", ">");
|
||||
private final Btrie_slim_mgr ws_end;
|
||||
@ -24,11 +24,11 @@ public class Xosearch_word_lang {
|
||||
.Add_many_str(".", ",", "?", "!", ":", ";", "'", "\"", "-")
|
||||
;
|
||||
private final Btrie_slim_mgr punct_end;
|
||||
public Xosearch_word_lang() {
|
||||
public Xofulltext_word_lang() {
|
||||
this.ws_end = ws_bgn;
|
||||
this.punct_end = punct_bgn;
|
||||
}
|
||||
public void Get_word_bounds(Xosearch_word_bounds word_bounds, Btrie_rv trv, byte[] src, int src_end, int hook_bgn, int hook_end) {
|
||||
public void Get_word_bounds(Xofulltext_word_bounds word_bounds, Btrie_rv trv, byte[] src, int src_end, int hook_bgn, int hook_end) {
|
||||
int tmp_pos = -1;
|
||||
Object tmp_obj = null;
|
||||
|
@ -13,19 +13,19 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.*;
|
||||
import gplx.core.btries.*;
|
||||
import gplx.xowa.addons.wikis.searchs.searchers.crts.*;
|
||||
public class Xosearch_word_node {
|
||||
public class Xofulltext_word_node {
|
||||
public int tid;
|
||||
public Xosearch_word_node[] subs;
|
||||
public Xofulltext_word_node[] subs;
|
||||
public byte[] word_orig;
|
||||
public byte[] word_hook;
|
||||
public boolean wildcard_at_bgn;
|
||||
public boolean wildcard_at_end;
|
||||
public boolean found;
|
||||
|
||||
public boolean Match_word(Xosearch_word_lang ctx, byte[] src, int hook_bgn, int hook_end, int word_bgn, int word_end) {
|
||||
public boolean Match_word(Xofulltext_word_lang ctx, byte[] src, int hook_bgn, int hook_end, int word_bgn, int word_end) {
|
||||
// if no wildcard at bgn, hook_bgn must match word_bgn
|
||||
if ( !wildcard_at_bgn
|
||||
&& hook_bgn != word_bgn)
|
||||
@ -40,19 +40,19 @@ public class Xosearch_word_node {
|
||||
}
|
||||
public void Clear() {
|
||||
found = false;
|
||||
for (Xosearch_word_node sub : subs)
|
||||
for (Xofulltext_word_node sub : subs)
|
||||
sub.Clear();
|
||||
}
|
||||
public boolean Eval() {
|
||||
switch (tid) {
|
||||
case Srch_crt_itm.Tid__and: {
|
||||
for (Xosearch_word_node sub : subs)
|
||||
for (Xofulltext_word_node sub : subs)
|
||||
if (!sub.Eval())
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
case Srch_crt_itm.Tid__or: {
|
||||
for (Xosearch_word_node sub : subs)
|
||||
for (Xofulltext_word_node sub : subs)
|
||||
if (sub.Eval())
|
||||
return true;
|
||||
return false;
|
@ -13,12 +13,12 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.finders; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.*;
|
||||
import gplx.core.btries.*;
|
||||
import gplx.xowa.addons.wikis.searchs.searchers.crts.*;
|
||||
public class Xosearch_word_node_ {
|
||||
public static Xosearch_word_node New_root(Srch_crt_itm src, Btrie_slim_mgr word_trie, boolean auto_wildcard_bgn, boolean auto_wildcard_end, byte wildchar_byte, byte not_byte) {
|
||||
Xosearch_word_node trg = new Xosearch_word_node();
|
||||
public class Xofulltext_word_node_ {
|
||||
public static Xofulltext_word_node New_root(Srch_crt_itm src, Btrie_slim_mgr word_trie, boolean auto_wildcard_bgn, boolean auto_wildcard_end, byte wildchar_byte, byte not_byte) {
|
||||
Xofulltext_word_node trg = new Xofulltext_word_node();
|
||||
trg.tid = src.Tid;
|
||||
|
||||
// set word-related props
|
||||
@ -65,7 +65,7 @@ public class Xosearch_word_node_ {
|
||||
|
||||
// set subs
|
||||
Srch_crt_itm[] src_subs = src.Subs;
|
||||
Xosearch_word_node[] trg_subs = new Xosearch_word_node[src_subs.length];
|
||||
Xofulltext_word_node[] trg_subs = new Xofulltext_word_node[src_subs.length];
|
||||
trg.subs = trg_subs;
|
||||
int len = src_subs.length;
|
||||
for (int i = 0; i < len; i++) {
|
@ -13,12 +13,12 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers.gflucenes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.gflucenes; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*;
|
||||
import gplx.gflucene.*;
|
||||
import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.uis.*;
|
||||
public class Xosearch_searcher__lucene implements Xosearch_searcher {
|
||||
import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.uis.*;
|
||||
public class Xofulltext_searcher__lucene implements Xofulltext_searcher {
|
||||
private final Gflucene_searcher searcher = new Gflucene_searcher();
|
||||
public void Search(Xosearch_searcher_ui cbk, Xow_wiki wiki, Xosearch_searcher_args args) {
|
||||
public void Search(Xofulltext_searcher_ui cbk, Xow_wiki wiki, Xofulltext_searcher_args args) {
|
||||
// create list
|
||||
List_adp list = List_adp_.New();
|
||||
|
||||
@ -37,7 +37,7 @@ public class Xosearch_searcher__lucene implements Xosearch_searcher {
|
||||
Gflucene_index_data found = (Gflucene_index_data)list.Get_at(i);
|
||||
|
||||
// call page found
|
||||
Xosearch_searcher_page page = new Xosearch_searcher_page(args.query_id, wiki.Domain_str(), found.page_id, found.title, false);
|
||||
Xofulltext_searcher_page page = new Xofulltext_searcher_page(args.query_id, wiki.Domain_str(), found.page_id, found.title, false);
|
||||
cbk.Send_page_add(page);
|
||||
}
|
||||
}
|
@ -13,9 +13,9 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers.uis; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*;
|
||||
public class Xosearch_searcher_line {
|
||||
public Xosearch_searcher_line(String wiki_domain, int page_id, int found_idx, String excerpt) {
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.uis; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*;
|
||||
public class Xofulltext_searcher_line {
|
||||
public Xofulltext_searcher_line(String wiki_domain, int page_id, int found_idx, String excerpt) {
|
||||
this.wiki_domain = wiki_domain;
|
||||
this.page_id = page_id;
|
||||
this.found_idx = found_idx;
|
@ -13,9 +13,9 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers.uis; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*;
|
||||
public class Xosearch_searcher_page {
|
||||
public Xosearch_searcher_page(int query_id, String wiki_domain, int page_id, String page_title, boolean expand_matches_section) {
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.uis; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*;
|
||||
public class Xofulltext_searcher_page {
|
||||
public Xofulltext_searcher_page(int query_id, String wiki_domain, int page_id, String page_title, boolean expand_matches_section) {
|
||||
this.query_id = query_id;
|
||||
this.wiki_domain = wiki_domain;
|
||||
this.page_id = page_id;
|
@ -13,10 +13,10 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers.uis; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*;
|
||||
public interface Xosearch_searcher_ui {
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.uis; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*;
|
||||
public interface Xofulltext_searcher_ui {
|
||||
void Send_wiki_add(byte[] wiki_domain);
|
||||
void Send_wiki_update(byte[] wiki, int found, int searched);
|
||||
void Send_page_add(Xosearch_searcher_page page);
|
||||
void Send_line_add(Xosearch_searcher_line line);
|
||||
void Send_page_add(Xofulltext_searcher_page page);
|
||||
void Send_line_add(Xofulltext_searcher_line line);
|
||||
}
|
@ -13,29 +13,29 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers.uis; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*; import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.uis; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*; import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*;
|
||||
import gplx.xowa.guis.cbks.*;
|
||||
public class Xosearch_searcher_ui__gui implements Xosearch_searcher_ui {
|
||||
public class Xofulltext_searcher_ui__gui implements Xofulltext_searcher_ui {
|
||||
private final Xog_cbk_mgr cbk_mgr;
|
||||
private final Xog_cbk_trg cbk_trg;
|
||||
public Xosearch_searcher_ui__gui(Xog_cbk_mgr cbk_mgr, Xog_cbk_trg cbk_trg) {
|
||||
public Xofulltext_searcher_ui__gui(Xog_cbk_mgr cbk_mgr, Xog_cbk_trg cbk_trg) {
|
||||
this.cbk_mgr = cbk_mgr;
|
||||
this.cbk_trg = cbk_trg;
|
||||
}
|
||||
public void Send_wiki_add(byte[] wiki_domain) {
|
||||
cbk_mgr.Send_json(cbk_trg, "xo.search_fulltext.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_domain)
|
||||
);
|
||||
}
|
||||
public void Send_wiki_update(byte[] wiki, int found, int searched) {
|
||||
cbk_mgr.Send_json(cbk_trg, "xo.search_fulltext.results__wiki__update__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||
cbk_mgr.Send_json(cbk_trg, "xo.fulltext_searcher.results__wiki__update__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||
.Add_bry("wiki", wiki)
|
||||
.Add_int("found", found)
|
||||
.Add_int("searched", searched)
|
||||
);
|
||||
}
|
||||
public void Send_page_add(Xosearch_searcher_page page) {
|
||||
cbk_mgr.Send_json(cbk_trg, "xo.search_fulltext.results__page__add__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||
public void Send_page_add(Xofulltext_searcher_page page) {
|
||||
cbk_mgr.Send_json(cbk_trg, "xo.fulltext_searcher.results__page__add__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||
.Add_int("query_id", page.Query_id())
|
||||
.Add_str("wiki", page.Wiki_domain())
|
||||
.Add_int("page_id", page.Page_id())
|
||||
@ -43,8 +43,8 @@ public class Xosearch_searcher_ui__gui implements Xosearch_searcher_ui {
|
||||
.Add_bool("expand_matches_section", page.Expand_matches_section())
|
||||
);
|
||||
}
|
||||
public void Send_line_add(Xosearch_searcher_line match) {
|
||||
cbk_mgr.Send_json(cbk_trg, "xo.search_fulltext.results__line__add__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||
public void Send_line_add(Xofulltext_searcher_line match) {
|
||||
cbk_mgr.Send_json(cbk_trg, "xo.fulltext_searcher.results__line__add__recv", gplx.core.gfobjs.Gfobj_nde.New()
|
||||
.Add_str("wiki", match.Wiki_domain())
|
||||
.Add_int("page_id", match.Page_id())
|
||||
.Add_int("line", match.Found_idx())
|
@ -13,14 +13,14 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*;
|
||||
import gplx.langs.mustaches.*;
|
||||
public class Xosearch_fulltext_doc implements Mustache_doc_itm {
|
||||
public class Xofulltext_searcher_doc implements Mustache_doc_itm {
|
||||
private final byte[] query;
|
||||
private final boolean case_match, auto_wildcard_bgn, auto_wildcard_end, expand_matches_section, show_all_matches;
|
||||
private final int max_pages_per_wiki;
|
||||
private final String wikis, namespaces;
|
||||
public Xosearch_fulltext_doc
|
||||
public Xofulltext_searcher_doc
|
||||
( byte[] query, boolean case_match, boolean auto_wildcard_bgn, boolean auto_wildcard_end
|
||||
, boolean expand_matches_section, boolean show_all_matches
|
||||
, int max_pages_per_wiki
|
@ -13,15 +13,15 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*;
|
||||
import gplx.xowa.specials.*; import gplx.langs.mustaches.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.tags.*;
|
||||
import gplx.dbs.*;
|
||||
class Xosearch_fulltext_html extends Xow_special_wtr__base {
|
||||
class Xofulltext_searcher_html extends Xow_special_wtr__base {
|
||||
private final byte[] query;
|
||||
private final boolean case_match, auto_wildcard_bgn, auto_wildcard_end, expand_matches_section, show_all_matches;
|
||||
private final int max_pages_per_wiki;
|
||||
private final String wikis, namespaces;
|
||||
public Xosearch_fulltext_html
|
||||
public Xofulltext_searcher_html
|
||||
( byte[] query, boolean case_match, boolean auto_wildcard_bgn, boolean auto_wildcard_end
|
||||
, boolean expand_matches_section, boolean show_all_matches
|
||||
, int max_pages_per_wiki
|
||||
@ -37,9 +37,9 @@ class Xosearch_fulltext_html extends Xow_special_wtr__base {
|
||||
this.namespaces = namespaces;
|
||||
}
|
||||
@Override protected Io_url Get_addon_dir(Xoa_app app) {return Addon_dir(app);}
|
||||
@Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xosearch_fulltext.template.html");}
|
||||
@Override protected Io_url Get_mustache_fil(Io_url addon_dir) {return addon_dir.GenSubFil_nest("bin", "xofulltext_searcher.template.html");}
|
||||
@Override protected Mustache_doc_itm Bld_mustache_root(Xoa_app app) {
|
||||
return new Xosearch_fulltext_doc
|
||||
return new Xofulltext_searcher_doc
|
||||
( query, case_match, auto_wildcard_bgn, auto_wildcard_end
|
||||
, expand_matches_section, show_all_matches
|
||||
, max_pages_per_wiki, wikis, namespaces);
|
||||
@ -56,12 +56,12 @@ class Xosearch_fulltext_html extends Xow_special_wtr__base {
|
||||
Xopg_tag_wtr_.Add__xonotify (head_tags, app.Fsys_mgr().Http_root());
|
||||
Xopg_alertify_.Add_tags (head_tags, app.Fsys_mgr().Http_root());
|
||||
|
||||
head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xosearch_fulltext.css")));
|
||||
head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("bin", "xosearch_fulltext.js")));
|
||||
head_tags.Add(Xopg_tag_itm.New_css_file(addon_dir.GenSubFil_nest("bin", "xofulltext_searcher.css")));
|
||||
head_tags.Add(Xopg_tag_itm.New_js_file(addon_dir.GenSubFil_nest("bin", "xofulltext_searcher.js")));
|
||||
|
||||
page_data.Js_enabled_y_();
|
||||
}
|
||||
public static Io_url Addon_dir(Xoa_app app) {
|
||||
return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "wiki", "search", "fulltext");
|
||||
return app.Fsys_mgr().Http_root().GenSubDir_nest("bin", "any", "xowa", "addon", "wiki", "fulltext", "searcher");
|
||||
}
|
||||
}
|
@ -13,10 +13,10 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*;
|
||||
import gplx.xowa.specials.*; import gplx.core.net.qargs.*;
|
||||
import gplx.xowa.addons.apps.cfgs.*;
|
||||
public class Xosearch_fulltext_special implements Xow_special_page {
|
||||
public class Xofulltext_searcher_special implements Xow_special_page {
|
||||
public void Special__gen(Xow_wiki wiki, Xoa_page page, Xoa_url url, Xoa_ttl ttl) {
|
||||
// get qry if any
|
||||
Gfo_qarg_mgr url_args = new Gfo_qarg_mgr().Init(url.Qargs_ary());
|
||||
@ -24,7 +24,7 @@ public class Xosearch_fulltext_special implements Xow_special_page {
|
||||
|
||||
// get options and create page
|
||||
Xocfg_mgr cfg_mgr = wiki.App().Cfg();
|
||||
new Xosearch_fulltext_html
|
||||
new Xofulltext_searcher_html
|
||||
( query
|
||||
, cfg_mgr.Get_bool_app_or("xowa.addon.search.fulltext.special.case_match", false)
|
||||
, cfg_mgr.Get_bool_app_or("xowa.addon.search.fulltext.special.auto_wildcard_bgn", false)
|
||||
@ -36,8 +36,8 @@ public class Xosearch_fulltext_special implements Xow_special_page {
|
||||
, cfg_mgr.Get_str_app_or ("xowa.addon.search.fulltext.special.namespaces", "0|4")
|
||||
).Bld_page_by_mustache(wiki.App(), page, this);
|
||||
}
|
||||
Xosearch_fulltext_special(Xow_special_meta special__meta) {this.special__meta = special__meta;}
|
||||
Xofulltext_searcher_special(Xow_special_meta special__meta) {this.special__meta = special__meta;}
|
||||
public Xow_special_meta Special__meta() {return special__meta;} private final Xow_special_meta special__meta;
|
||||
public Xow_special_page Special__clone() {return this;}
|
||||
public static final Xow_special_page Prototype = new Xosearch_fulltext_special(Xow_special_meta.New_xo("XowaSearch", "Search"));
|
||||
public static final Xow_special_page Prototype = new Xofulltext_searcher_special(Xow_special_meta.New_xo("XowaSearch", "Search"));
|
||||
}
|
@ -13,13 +13,13 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.svcs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.svcs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*;
|
||||
import gplx.langs.jsons.*;
|
||||
import gplx.xowa.htmls.bridges.*;
|
||||
public class Xosearch_fulltext_bridge implements Bridge_cmd_itm {
|
||||
private Xosearch_fulltext_svc svc;
|
||||
public class Xofulltext_searcher_bridge implements Bridge_cmd_itm {
|
||||
private Xofulltext_searcher_svc svc;
|
||||
public void Init_by_app(Xoa_app app) {
|
||||
this.svc = new Xosearch_fulltext_svc(app);
|
||||
this.svc = new Xofulltext_searcher_svc(app);
|
||||
}
|
||||
public String Exec(Json_nde data) {
|
||||
byte proc_id = proc_hash.Get_as_byte_or(data.Get_as_bry_or(Bridge_cmd_mgr.Msg__proc, null), Byte_ascii.Max_7_bit);
|
||||
@ -38,6 +38,6 @@ public class Xosearch_fulltext_bridge implements Bridge_cmd_itm {
|
||||
.Add_str_byte("get_lines_rest" , Proc__get_lines_rest)
|
||||
;
|
||||
|
||||
public byte[] Key() {return BRIDGE_KEY;} public static final byte[] BRIDGE_KEY = Bry_.new_a7("xowa.wiki.search.fulltext");
|
||||
public static final Xosearch_fulltext_bridge Prototype = new Xosearch_fulltext_bridge(); Xosearch_fulltext_bridge() {}
|
||||
public byte[] Key() {return BRIDGE_KEY;} public static final byte[] BRIDGE_KEY = Bry_.new_a7("xowa.wiki.fulltext.searcher");
|
||||
public static final Xofulltext_searcher_bridge Prototype = new Xofulltext_searcher_bridge(); Xofulltext_searcher_bridge() {}
|
||||
}
|
@ -13,35 +13,35 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.svcs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
|
||||
package gplx.xowa.addons.wikis.fulltexts.searchers.svcs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.fulltexts.*; import gplx.xowa.addons.wikis.fulltexts.searchers.*;
|
||||
import gplx.core.btries.*;
|
||||
import gplx.langs.jsons.*;
|
||||
import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*;
|
||||
import gplx.xowa.guis.cbks.*;
|
||||
import gplx.xowa.addons.apps.cfgs.*;
|
||||
import gplx.xowa.addons.wikis.searchs.fulltexts.specials.*;
|
||||
import gplx.xowa.addons.wikis.searchs.fulltexts.caches.*;
|
||||
import gplx.xowa.addons.wikis.fulltexts.searchers.specials.*;
|
||||
import gplx.xowa.addons.wikis.fulltexts.searchers.caches.*;
|
||||
import gplx.xowa.addons.wikis.searchs.searchers.crts.*;
|
||||
import gplx.xowa.addons.wikis.searchs.searchers.crts.visitors.*;
|
||||
import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.*;
|
||||
import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.uis.*;
|
||||
import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.gflucenes.*;
|
||||
import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.brutes.*;
|
||||
class Xosearch_fulltext_svc implements Gfo_invk {
|
||||
import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.*;
|
||||
import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.uis.*;
|
||||
import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.gflucenes.*;
|
||||
import gplx.xowa.addons.wikis.fulltexts.searchers.mgrs.brutes.*;
|
||||
class Xofulltext_searcher_svc implements Gfo_invk {
|
||||
private final Xoa_app app;
|
||||
private final Xog_cbk_trg cbk_trg = Xog_cbk_trg.New(Xosearch_fulltext_special.Prototype.Special__meta().Ttl_bry());
|
||||
private final Xosearch_cache_mgr cache_mgr = new Xosearch_cache_mgr();
|
||||
private final Xosearch_searcher_ui searcher_cbk;
|
||||
public Xosearch_fulltext_svc(Xoa_app app) {
|
||||
private final Xog_cbk_trg cbk_trg = Xog_cbk_trg.New(Xofulltext_searcher_special.Prototype.Special__meta().Ttl_bry());
|
||||
private final Xofulltext_cache_mgr cache_mgr = new Xofulltext_cache_mgr();
|
||||
private final Xofulltext_searcher_ui searcher_cbk;
|
||||
public Xofulltext_searcher_svc(Xoa_app app) {
|
||||
this.app = app;
|
||||
this.searcher_cbk = new Xosearch_searcher_ui__gui(app.Gui__cbk_mgr(), cbk_trg);
|
||||
this.searcher_cbk = new Xofulltext_searcher_ui__gui(app.Gui__cbk_mgr(), cbk_trg);
|
||||
}
|
||||
public void Search(Json_nde args) {
|
||||
// for now, always clear cache; "get_lines_rest" will only work for latest search
|
||||
cache_mgr.Clear();
|
||||
|
||||
// get search_args
|
||||
Xosearch_searcher_args search_args = Xosearch_searcher_args.New_by_json(args);
|
||||
Xofulltext_searcher_args search_args = Xofulltext_searcher_args.New_by_json(args);
|
||||
search_args.query_id = cache_mgr.Next_qry_id();
|
||||
|
||||
// autosave any changes if enabled
|
||||
@ -59,7 +59,7 @@ class Xosearch_fulltext_svc implements Gfo_invk {
|
||||
// launch thread
|
||||
gplx.core.threads.Thread_adp_.Start_by_val("search", Cancelable_.Never, this, Invk__search, search_args);
|
||||
}
|
||||
private void Search(Xosearch_searcher_args args) {
|
||||
private void Search(Xofulltext_searcher_args args) {
|
||||
try {
|
||||
// loop wikis
|
||||
byte[][] wiki_domains = Bry_split_.Split(args.wikis, Byte_ascii.Pipe_bry);
|
||||
@ -69,7 +69,7 @@ class Xosearch_fulltext_svc implements Gfo_invk {
|
||||
searcher_cbk.Send_wiki_add(wiki_domain);
|
||||
|
||||
// get searcher and search
|
||||
Xosearch_searcher searcher = Get_searcher(wiki);
|
||||
Xofulltext_searcher searcher = Get_searcher(wiki);
|
||||
searcher.Search(searcher_cbk, wiki, args);
|
||||
}
|
||||
} catch (Exception exc) {
|
||||
@ -81,23 +81,23 @@ class Xosearch_fulltext_svc implements Gfo_invk {
|
||||
Get_lines_rest(args.Get_as_int("qry_id"), args.Get_as_bry("wiki"), args.Get_as_int("page_id"));
|
||||
}
|
||||
private void Get_lines_rest(int qry_id, byte[] wiki_bry, int page_id) {
|
||||
Xosearch_cache_line[] lines = cache_mgr.Get_lines_rest(qry_id, wiki_bry, page_id);
|
||||
for (Xosearch_cache_line line : lines) {
|
||||
Xosearch_searcher_line match = new Xosearch_searcher_line(String_.new_u8(wiki_bry), page_id, line.Line_seq() + 1, String_.new_u8(line.Line_html()));
|
||||
Xofulltext_cache_line[] lines = cache_mgr.Get_lines_rest(qry_id, wiki_bry, page_id);
|
||||
for (Xofulltext_cache_line line : lines) {
|
||||
Xofulltext_searcher_line match = new Xofulltext_searcher_line(String_.new_u8(wiki_bry), page_id, line.Line_seq() + 1, String_.new_u8(line.Line_html()));
|
||||
searcher_cbk.Send_line_add(match);
|
||||
}
|
||||
}
|
||||
private Xosearch_searcher Get_searcher(Xow_wiki wiki) {
|
||||
private Xofulltext_searcher Get_searcher(Xow_wiki wiki) {
|
||||
if (Io_mgr.Instance.ExistsDir(wiki.Fsys_mgr().Root_dir().GenSubDir_nest("data", "search"))) {
|
||||
return new Xosearch_searcher__lucene();
|
||||
return new Xofulltext_searcher__lucene();
|
||||
}
|
||||
else {
|
||||
return new Xosearch_searcher__brute(app, cbk_trg, cache_mgr);
|
||||
return new Xofulltext_searcher__brute(app, cbk_trg, cache_mgr);
|
||||
}
|
||||
}
|
||||
|
||||
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
|
||||
if (ctx.Match(k, Invk__search)) this.Search((Xosearch_searcher_args)m.ReadObj("v"));
|
||||
if (ctx.Match(k, Invk__search)) this.Search((Xofulltext_searcher_args)m.ReadObj("v"));
|
||||
else return Gfo_invk_.Rv_unhandled;
|
||||
return this;
|
||||
} private static final String Invk__search = "search";
|
@ -3,9 +3,9 @@
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/100_core"/>
|
||||
<classpathentry kind="lib" path="C:/000/200_dev/110_java/gplx.gflucene/lib/lucene-core-6.4.2.jar"/>
|
||||
<classpathentry kind="lib" path="C:/000/200_dev/110_java/gplx.gflucene/lib/lucene-memory-6.4.2.jar"/>
|
||||
<classpathentry kind="lib" path="C:/000/200_dev/110_java/gplx.gflucene/lib/lucene-highlighter-6.4.2.jar"/>
|
||||
<classpathentry kind="lib" path="C:/000/200_dev/110_java/gplx.gflucene/lib/lucene-queryparser-6.4.2.jar"/>
|
||||
<classpathentry kind="lib" path="lib/lucene-core-6.4.2.jar"/>
|
||||
<classpathentry kind="lib" path="lib/lucene-memory-6.4.2.jar"/>
|
||||
<classpathentry kind="lib" path="lib/lucene-highlighter-6.4.2.jar"/>
|
||||
<classpathentry kind="lib" path="lib/lucene-queryparser-6.4.2.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
91
gplx.gflucene/src/gplx/gflucene/Gflucene_index_bldr.java
Normal file
91
gplx.gflucene/src/gplx/gflucene/Gflucene_index_bldr.java
Normal file
@ -0,0 +1,91 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
||||
|
||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
||||
or alternatively under the terms of the Apache License Version 2.0.
|
||||
|
||||
You may use XOWA according to either of these licenses as is most appropriate
|
||||
for your project on a case-by-case basis.
|
||||
|
||||
The terms of each license can be found in the source code repository:
|
||||
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.gflucene; import gplx.*;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
import org.apache.lucene.analysis.standard.StandardAnalyzer;
|
||||
import org.apache.lucene.document.*;
|
||||
import org.apache.lucene.index.IndexOptions;
|
||||
import org.apache.lucene.index.IndexWriter;
|
||||
import org.apache.lucene.index.IndexWriterConfig;
|
||||
import org.apache.lucene.store.Directory;
|
||||
import org.apache.lucene.store.FSDirectory;
|
||||
public class Gflucene_index_bldr {
|
||||
private final StandardAnalyzer analyzer = new StandardAnalyzer();
|
||||
private final IndexWriterConfig config;
|
||||
private Directory index;
|
||||
private IndexWriter wtr;
|
||||
private FieldType body_fld;
|
||||
|
||||
public Gflucene_index_bldr() {
|
||||
this.config = new IndexWriterConfig(analyzer);
|
||||
}
|
||||
|
||||
public void Init(String index_dir) {
|
||||
|
||||
// create index
|
||||
Path path = Paths.get(index_dir);
|
||||
try {
|
||||
this.index = FSDirectory.open(path);
|
||||
} catch (IOException e) {
|
||||
throw Err_.new_exc(e, "lucene_index", "failed to open lucene index", "path", path);
|
||||
}
|
||||
|
||||
// create writer
|
||||
try {
|
||||
wtr = new IndexWriter(index, config);
|
||||
} catch (IOException e) {
|
||||
throw Err_.new_exc(e, "lucene_index", "failed to create writer");
|
||||
}
|
||||
|
||||
// create field for body
|
||||
this.body_fld = new FieldType();
|
||||
body_fld.setIndexOptions(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS);
|
||||
// body_fld.setIndexOptions(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS);
|
||||
// body_fld.setStored(true);
|
||||
body_fld.setTokenized(true);
|
||||
// body_fld.setStoreTermVectors(true);
|
||||
// body_fld.setStoreTermVectorOffsets(true);
|
||||
}
|
||||
public void Exec(Gflucene_index_data data) {
|
||||
// org.apache.lucene.document.
|
||||
Document doc = new Document();
|
||||
// doc.add(new SortedNumericDocValuesField("page_score", data.score));
|
||||
doc.add(new StoredField("page_score", data.score));
|
||||
doc.add(new StoredField("page_id", data.page_id));
|
||||
doc.add(new TextField("title", data.title, Field.Store.YES));
|
||||
doc.add(new Field("body", data.body, body_fld));
|
||||
try {
|
||||
wtr.addDocument(doc);
|
||||
} catch (IOException e) {
|
||||
throw Err_.new_exc(e, "lucene_index", "failed to add document", "title", data.title);
|
||||
}
|
||||
}
|
||||
public void Term() {
|
||||
try {
|
||||
wtr.close();
|
||||
} catch (IOException e) {
|
||||
throw Err_.new_exc(e, "lucene_index", "failed to close writer");
|
||||
}
|
||||
try {
|
||||
index.close();
|
||||
} catch (IOException e) {
|
||||
throw Err_.new_exc(e, "lucene_index", "failed to close writer");
|
||||
}
|
||||
}
|
||||
}
|
@ -13,8 +13,17 @@ The terms of each license can be found in the source code repository:
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.xowa.addons.wikis.searchs.fulltexts.searchers; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.wikis.*; import gplx.xowa.addons.wikis.searchs.*; import gplx.xowa.addons.wikis.searchs.fulltexts.*;
|
||||
import gplx.xowa.addons.wikis.searchs.fulltexts.searchers.uis.*;
|
||||
public interface Xosearch_searcher {
|
||||
void Search(Xosearch_searcher_ui ui, Xow_wiki wiki, Xosearch_searcher_args args);
|
||||
package gplx.gflucene; import gplx.*;
|
||||
public class Gflucene_index_data {
|
||||
public String title;
|
||||
public String body;
|
||||
public int page_id;
|
||||
public int score;
|
||||
public float lucene_score = 0;
|
||||
public Gflucene_index_data(int page_id, int score, String title, String body) {
|
||||
this.page_id = page_id;
|
||||
this.score = score;
|
||||
this.title = title;
|
||||
this.body = body;
|
||||
}
|
||||
}
|
73
gplx.gflucene/src/gplx/gflucene/Gflucene_searcher.java
Normal file
73
gplx.gflucene/src/gplx/gflucene/Gflucene_searcher.java
Normal file
@ -0,0 +1,73 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
||||
|
||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
||||
or alternatively under the terms of the Apache License Version 2.0.
|
||||
|
||||
You may use XOWA according to either of these licenses as is most appropriate
|
||||
for your project on a case-by-case basis.
|
||||
|
||||
The terms of each license can be found in the source code repository:
|
||||
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.gflucene; import gplx.*;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
import org.apache.lucene.analysis.standard.StandardAnalyzer;
|
||||
import org.apache.lucene.document.Document;
|
||||
import org.apache.lucene.index.DirectoryReader;
|
||||
import org.apache.lucene.index.IndexReader;
|
||||
import org.apache.lucene.queryparser.classic.QueryParser;
|
||||
import org.apache.lucene.search.IndexSearcher;
|
||||
import org.apache.lucene.search.Query;
|
||||
import org.apache.lucene.search.ScoreDoc;
|
||||
import org.apache.lucene.search.TopDocs;
|
||||
import org.apache.lucene.store.Directory;
|
||||
import org.apache.lucene.store.FSDirectory;
|
||||
public class Gflucene_searcher {
|
||||
private final StandardAnalyzer analyzer = new StandardAnalyzer();
|
||||
private Directory index;
|
||||
|
||||
public Gflucene_searcher() {
|
||||
}
|
||||
|
||||
public void Init(String index_dir) {
|
||||
Path path = Paths.get(index_dir);
|
||||
try {
|
||||
this.index = FSDirectory.open(path);
|
||||
} catch (IOException e) {
|
||||
throw Err_.new_exc(e, "lucene_index", "failed to init searcher", "dir", index_dir);
|
||||
}
|
||||
}
|
||||
public void Exec(List_adp list, Gflucene_searcher_data data) {
|
||||
try {
|
||||
IndexReader reader = DirectoryReader.open(index);
|
||||
IndexSearcher searcher = new IndexSearcher(reader);
|
||||
|
||||
|
||||
Query query = new QueryParser("body", analyzer).parse(data.query);
|
||||
// TopDocs docs = searcher.search(query, reader.maxDoc());
|
||||
TopDocs docs = searcher.search(query, data.match_max);
|
||||
ScoreDoc[] hits = docs.scoreDocs;
|
||||
|
||||
for(int i = 0; i < hits.length; i++) {
|
||||
int docId = hits[i].doc;
|
||||
Document d = searcher.doc(docId);
|
||||
Gflucene_index_data doc = new Gflucene_index_data(Integer.parseInt(d.get("page_id")), Integer.parseInt(d.get("page_score")), d.get("title"), "");
|
||||
doc.lucene_score = hits[i].score;
|
||||
list.Add(doc);
|
||||
}
|
||||
|
||||
reader.close();
|
||||
} catch (Exception e) {
|
||||
throw Err_.new_exc(e, "lucene_index", "failed to exec seearch", "query", data.query);
|
||||
}
|
||||
}
|
||||
public void Term() {
|
||||
}
|
||||
}
|
24
gplx.gflucene/src/gplx/gflucene/Gflucene_searcher_data.java
Normal file
24
gplx.gflucene/src/gplx/gflucene/Gflucene_searcher_data.java
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
XOWA: the XOWA Offline Wiki Application
|
||||
Copyright (C) 2012-2017 gnosygnu@gmail.com
|
||||
|
||||
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
|
||||
or alternatively under the terms of the Apache License Version 2.0.
|
||||
|
||||
You may use XOWA according to either of these licenses as is most appropriate
|
||||
for your project on a case-by-case basis.
|
||||
|
||||
The terms of each license can be found in the source code repository:
|
||||
|
||||
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
|
||||
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
|
||||
*/
|
||||
package gplx.gflucene; import gplx.*;
|
||||
public class Gflucene_searcher_data {
|
||||
public String query;
|
||||
public int match_max;
|
||||
public Gflucene_searcher_data(String query, int match_max) {
|
||||
this.query = query;
|
||||
this.match_max = match_max;
|
||||
}
|
||||
}
|
@ -1 +1 @@
|
||||
[A
|
||||
fix readability calc
|
||||
|
Loading…
Reference in New Issue
Block a user