ES elasticsearch-analysis-dynamic-synonym連接數(shù)據(jù)庫動態(tài)更新synonym近義詞
修改源碼實現(xiàn)連接數(shù)據(jù)庫獲取近義詞匯
下載elasticsearch-analysis-dynamic-synonym打開項目(https://github.com/bells/elasticsearch-analysis-dynamic-synonym/tree/master)
一、修改pom.xml
引入依賴
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
<!--或者oracle-->
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.3.0.0</version>
</dependency>
將pom文件中的版本修改成跟你的es版本號一樣的,比如我的是7.2.0
使用不同的版本對應(yīng)的lucene包不同,某些代碼略有不同,根據(jù)編譯器提示修改即可,下面的代碼照常添加
<version>7.2.0</version>
二、 修改main/assemblies/plugin.xml
? 在標(biāo)簽下添加 根據(jù)不同環(huán)境二選一
<!--添加mysql-connector依賴-->
<dependencySet>
<outputDirectory/>
<useProjectArtifact>true</useProjectArtifact>
<useTransitiveFiltering>true</useTransitiveFiltering>
<includes>
<include>mysql:mysql-connector-java</include>
</includes>
</dependencySet>
<!--將 oracle 的 jar 包打包進(jìn) zip 包-->
<dependencySet>
<outputDirectory/>
<useProjectArtifact>true</useProjectArtifact>
<useTransitiveFiltering>true</useTransitiveFiltering>
<includes>
<include>com.oracle.ojdbc:ojdbc8</include>
</includes>
</dependencySet>
在標(biāo)簽下添加(與標(biāo)簽同級)
<fileSets>
<fileSet>
<directory>${project.basedir}/config</directory>
<outputDirectory>config</outputDirectory>
</fileSet>
</fileSets>
三、jdbc配置文件
在項目根目錄下創(chuàng)建config/jdbc.properties文件,寫入以下內(nèi)容文章來源:http://www.zghlxwxcb.cn/news/detail-765074.html
# mysql
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai
jdbc.username=賬號
jdbc.password=密碼
#近義詞sql查詢語句。(注意要以words字段展示)
synonym.word.sql=SELECT `keys` AS words FROM es_synonym WHERE ifdel = '0'
#獲取近義詞最后更新時間,用來判斷是否發(fā)生了更新。(注意要以maxModitime詞匯顯示)
synonym.lastModitime.sql=SELECT MAX(moditime) AS maxModitime FROM es_synonym
interval=10
# 配置連接oracle數(shù)據(jù)庫
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL
jdbc.username=root
jdbc.password=123456
#近義詞sql查詢語句。(注意要以words字段展示)
synonym.word.sql=select SYNONYM_KEY as words from es_synonym where IS_DELETED = '0'
#獲取近義詞最后更新時間,用來判斷是否發(fā)生了更新。(注意要以maxModitime詞匯顯示)
synonym.lastModitime.sql=SELECT MAX(UPD_TIME) AS maxModitime FROM es_synonym
interval=60
四、編寫加載詞匯類
1、創(chuàng)建DynamicSynonymFromDb類
在com.bellszhu.elasticsearch.plugin.synonym.analysis包下,我們可以看到很多加載近義詞匯的類,比如RemoteSynonymFile類就是通過接口來加載近義詞詞匯的。
? 我們在該包下創(chuàng)建類DynamicSynonymFromDb,同時繼承SynonymFile接口,該類是用來讀取數(shù)據(jù)庫的近義詞匯的,代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-765074.html
/**
* @author yandi
* @date 2023/06/15
*/
public class DynamicSynonymFromDb implements SynonymFile {
/**
* 配置文件名
*/
private final static String DB_PROPERTIES = "jdbc.properties";
private static Logger logger = LogManager.getLogger("dynamic-synonym");
private String format;
private boolean expand;
private boolean lenient;
private Analyzer analyzer;
private Environment env;
/**
* 動態(tài)配置類型
*/
private String location;
/**
* 作用類型
*/
private String group;
private long lastModified;
private Path conf_dir;
private JdbcConfig jdbcConfig;
DynamicSynonymFromDb(Environment env, Analyzer analyzer,
boolean expand, boolean lenient, String format, String location, String group) {
this.analyzer = analyzer;
this.expand = expand;
this.lenient = lenient;
this.format = format;
this.env = env;
this.location = location;
this.group = group;
// 讀取配置文件
setJdbcConfig();
// 加載驅(qū)動
try {
Class.forName(jdbcConfig.getDriver());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
// 判斷是否需要加載
isNeedReloadSynonymMap()
到了這里,關(guān)于ES elasticsearch-analysis-dynamic-synonym連接數(shù)據(jù)庫動態(tài)更新synonym近義詞的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!