# mdict-java
**Repository Path**: djun100/mdict-java
## Basic Information
- **Project Name**: mdict-java
- **Description**: Query library for Mdict (mdx or mdd) , a popular dictionary file format.
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 0
- **Created**: 2021-11-08
- **Last Updated**: 2023-11-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# MDict Library in pure java !
It supports:
I.lzo(via lzo-core-1.0.5.jar)
II.Ripemd128 key-info encryption.
III.Mdx add Mdd Builders.
and is able to do:
I.Basic query.
II.Conjuction search.
III.Fast Fuzzy search (with wild cards).
IV.Fast Fulltext retrieval (with wild cards).
# App Released!

# Usage:
### 1.Basic query:
```
String key = "happy";
mdict md = new mdict(path);
int search_result = md.lookUp(key, true);//true means to match strictly
if(search_result!=-1){
String html_contents = md.getRecordAt(search_result);
String entry_name = md.getEntryAt(search_result);
}
```
### 2.Search in a bunch of dicts:
```
String key = "happy";
ArrayList mdxs = new ArrayList();
mdxs.add(path1);
mdxs.add(path2);
RBTree_additive combining_search_tree = new RBTree_additive();
for(int i=0;i= keyword, maybe some mathematician could tell me why, but I've tested over 100000 times without any expectation.
```
/*via mdict-js
*note at first time we feed in 0 as start and array.length as end. it must not be array.length-1.
*/
public static int reduce(int phrase, int[] array,int start,int end) {
int len = end-start;
if (len > 1) {
len = len >> 1;
return phrase > array[start + len - 1]
? reduce(phrase,array,start+len,end)
: reduce(phrase,array,start,start+len);
} else {
return start;
}
}
```
