整合Lucene 4.10.1 与IK Analyzer

目录[-]

建立java项目

一个示例:

第二个示例:

参考:

更多资料:

注意,IK Analyzer需要使用其下载列表中的 IK Analyzer 2012FF_hf1.zip,否则在和Lucene 4.10配合使用时会报错。 

我使用 intellij IDEA 12进行的测试。 

建立java项目

建立项目HelloLucene,导入Lucene的几个库。“File”->“Project Structure”->

将IK Analyzer 2012FF_hf1.zip解压后的源码放入src目录,并将字典和配置文件放入src目录,最终如下:

一个示例:

IKAnalyzerDemo.java中是我在其他地方找的一个示例,和IK的官方示例很像。内容如下:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

packageorg.apache.lucene.demo;

importjava.io.IOException;

importjava.io.StringReader;

 

importorg.apache.lucene.analysis.Analyzer;

importorg.apache.lucene.analysis.TokenStream;

importorg.apache.lucene.analysis.tokenattributes.CharTermAttribute;

importorg.apache.lucene.document.Document;

importorg.apache.lucene.document.Field;

importorg.apache.lucene.index.IndexReader;

importorg.apache.lucene.index.IndexWriter;

importorg.apache.lucene.index.IndexWriterConfig;

importorg.apache.lucene.queryparser.classic.ParseException;

importorg.apache.lucene.queryparser.classic.QueryParser;

importorg.apache.lucene.search.IndexSearcher;

importorg.apache.lucene.search.Query;

importorg.apache.lucene.search.ScoreDoc;

importorg.apache.lucene.search.TopDocs;

importorg.apache.lucene.store.RAMDirectory;

importorg.apache.lucene.util.Version;

importorg.wltea.analyzer.lucene.IKAnalyzer;

 

publicclass

IKAnalyzerDemo {

 

    /**

     *
@param args

     *
@throws IOException

     */

    publicstatic

void

main(String[] args)
throwsIOException
{

        //
TODO Auto-generated method stub

        //建立索引

        String
text1 =
"IK
Analyzer是一个结合词典分词和文法分词的中文分词开源工具包。它使用了全新的正向迭代最细粒度切"

+

                "分算法。";

        String
text2 =
"中文分词工具包可以和lucene是一起使用的";

        String
text3 =
"中文分词,你妹";

        String
fieldName =
"contents";

        Analyzer
analyzer =
newIKAnalyzer();

        RAMDirectory
directory =
newRAMDirectory();

        IndexWriterConfig
writerConfig =
newIndexWriterConfig(Version.LUCENE_34,
analyzer);

        IndexWriter
indexWriter =
newIndexWriter(directory,
writerConfig);

        Document
document1 =
newDocument();

        document1.add(newField("ID","1",
Field.Store.YES, Field.Index.NOT_ANALYZED));

        document1.add(newField(fieldName,
text1, Field.Store.YES, Field.Index.ANALYZED));

        indexWriter.addDocument(document1);

 

        Document
document2 =
newDocument();

        document2.add(newField("ID","2",
Field.Store.YES, Field.Index.NOT_ANALYZED));

        document2.add(newField(fieldName,
text2, Field.Store.YES, Field.Index.ANALYZED));

        indexWriter.addDocument(document2);

 

        Document
document3 =
newDocument();

        document3.add(newField("ID","2",
Field.Store.YES, Field.Index.NOT_ANALYZED));

        document3.add(newField(fieldName,
text3, Field.Store.YES, Field.Index.ANALYZED));

        indexWriter.addDocument(document3);

        indexWriter.close();

 

 

        //搜索

        IndexReader
indexReader = IndexReader.open(directory);

        IndexSearcher
searcher =
newIndexSearcher(indexReader);

        String
request =
"中文分词工具包";

        QueryParser
parser =
newQueryParser(Version.LUCENE_40,
fieldName, analyzer);

        parser.setDefaultOperator(QueryParser.AND_OPERATOR);

        try{

            Query
query = parser.parse(request);

            TopDocs
topDocs = searcher.search(query,
5);

            System.out.println("命中数:"+topDocs.totalHits);

            ScoreDoc[]
docs = topDocs.scoreDocs;

            for(ScoreDoc
doc : docs){

                Document
d = searcher.doc(doc.doc);

                System.out.println("内容:"+d.get(fieldName));

            }

        }catch(ParseException
e) {

            //
TODO Auto-generated catch block

            e.printStackTrace();

        }finally{

            if(indexReader
!=
null){

                try{

                    indexReader.close();

                }catch(IOException
e) {

                    e.printStackTrace();

                }

            }

 

            if(directory
!=
null){

                try{

                    directory.close();

                }catch(Exception
e) {

                    e.printStackTrace();

                }

            }

        }

 

    }

 

}

这段代码是将索引文件放入内存中(RAMDirectory),运行结果如下: 

?


1

2

3

4

加载扩展停止词典:stopword.dic

命中数:2

内容:中文分词工具包可以和lucene是一起使用的

内容:IK
Analyzer是一个结合词典分词和文法分词的中文分词开源工具包。它使用了全新的正向迭代最细粒度切分算法。

这段代码有两个问题: 
1、Field()已经不推荐按使用。 
2、QueryParser()的使用方式也改变了。 

下面是更加符合要求的示例。 

第二个示例:

MyIndex类用来创建索引: 

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

importorg.apache.lucene.analysis.Analyzer;

importorg.apache.lucene.document.*;

importorg.apache.lucene.document.Field.Store;

importorg.apache.lucene.index.IndexWriter;

importorg.apache.lucene.index.IndexWriterConfig;

importorg.apache.lucene.store.Directory;

importorg.apache.lucene.store.FSDirectory;

importorg.apache.lucene.util.Version;

importorg.wltea.analyzer.lucene.IKAnalyzer;

 

importjava.io.File;

 

 

publicclass

MyIndex {

    publicstatic

void

main(String[] args) {

        String
ID;

        String
content;

 

        ID
=
"1231";

        content
=
"BuzzFeed
has compiled an amazing array of "

+

                "ridiculously
strange bridesmaid snapshots, courtesy of Awkward Family Photos. "
;

        indexPost(ID,
content);

 

        ID
=
"1234";

        content
=
"Lucene是apache软件基金会4
jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包"
;

        indexPost(ID,
content);

 

        ID
=
"1235";

        content
=
"Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现";

        indexPost(ID,
content);

 

    }

 

    publicstatic

void

indexPost(String ID, String content) {

        File
indexDir =
newFile("/home/letian/lucene-test/index");

 

        Analyzer
analyzer =
newIKAnalyzer();

 

        TextField
postIdField =
newTextField("id",
ID, Store.YES); 
//
不要用StringField

        TextField
postContentField =
newTextField("content",
content, Store.YES);

 

        Document
doc =
newDocument();

        doc.add(postIdField);

        doc.add(postContentField);

        IndexWriterConfig
iwConfig =
newIndexWriterConfig(Version.LUCENE_4_10_1,
analyzer);

        iwConfig.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND);

        try{

            Directory
fsDirectory = FSDirectory.open(indexDir);

            IndexWriter
indexWriter =
newIndexWriter(fsDirectory,
iwConfig);

            indexWriter.addDocument(doc);

            indexWriter.close();

        }catch(Exception
e) {

            e.printStackTrace();

        }

    }

}

索引以文件的形式存储在/home/letian/lucene-test/index目录中,Field被替换成了TextField,注意对于全文索引,不要使用StringField。 
运行上面的代码,创建索引的结果如下: 
 

MySearch.java是一个搜索的示例: 

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

importorg.apache.lucene.analysis.Analyzer;

importorg.apache.lucene.document.Document;

importorg.apache.lucene.queryparser.classic.QueryParser;

importorg.apache.lucene.search.*;

importorg.apache.lucene.store.Directory;

importorg.apache.lucene.store.FSDirectory;

importorg.apache.lucene.index.DirectoryReader;

importorg.wltea.analyzer.lucene.IKAnalyzer;

 

importjava.io.File;

 

publicclass

MySearch {

    publicstatic

void

main(String[] args) {

        Analyzer
analyzer =
newIKAnalyzer();

        File
indexDir =
newFile("/home/letian/lucene-test/index");

        try{

            Directory
fsDirectory = FSDirectory.open(indexDir);

            DirectoryReader
ireader = DirectoryReader.open(fsDirectory);

            IndexSearcher
isearcher =
newIndexSearcher(ireader);

 

 

            QueryParser
qp =
newQueryParser("content",
analyzer);        
//使用QueryParser查询分析器构造Query对象

            qp.setDefaultOperator(QueryParser.AND_OPERATOR);

            Query
query = qp.parse(
"Lucene");    //
搜索Lucene

            TopDocs
topDocs = isearcher.search(query ,
5);     //搜索相似度最高的5条记录

            System.out.println("命中:"+
topDocs.totalHits);

            ScoreDoc[]
scoreDocs = topDocs.scoreDocs;

            for(inti
=
0;
i < topDocs.totalHits; i++){

                Document
targetDoc = isearcher.doc(scoreDocs[i].doc);

                System.out.println("内容:"+
targetDoc.toString());

            }

 

        }catch(Exception
e) {

 

        }

    }

}

得到的结果如下: 

?


1

2

3

命中:2

内容:Document<stored,indexed,tokenized<id:1234>
stored,indexed,tokenized<content:Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包>>

内容:Document<stored,indexed,tokenized<id:1235>
stored,indexed,tokenized<content:Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现>>

目录[-]

建立java项目

一个示例:

第二个示例:

参考:

更多资料:

注意,IK Analyzer需要使用其下载列表中的 IK Analyzer 2012FF_hf1.zip,否则在和Lucene 4.10配合使用时会报错。 

我使用 intellij IDEA 12进行的测试。 

建立java项目

建立项目HelloLucene,导入Lucene的几个库。“File”->“Project Structure”->

将IK Analyzer 2012FF_hf1.zip解压后的源码放入src目录,并将字典和配置文件放入src目录,最终如下:

一个示例:

IKAnalyzerDemo.java中是我在其他地方找的一个示例,和IK的官方示例很像。内容如下:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

packageorg.apache.lucene.demo;

importjava.io.IOException;

importjava.io.StringReader;

 

importorg.apache.lucene.analysis.Analyzer;

importorg.apache.lucene.analysis.TokenStream;

importorg.apache.lucene.analysis.tokenattributes.CharTermAttribute;

importorg.apache.lucene.document.Document;

importorg.apache.lucene.document.Field;

importorg.apache.lucene.index.IndexReader;

importorg.apache.lucene.index.IndexWriter;

importorg.apache.lucene.index.IndexWriterConfig;

importorg.apache.lucene.queryparser.classic.ParseException;

importorg.apache.lucene.queryparser.classic.QueryParser;

importorg.apache.lucene.search.IndexSearcher;

importorg.apache.lucene.search.Query;

importorg.apache.lucene.search.ScoreDoc;

importorg.apache.lucene.search.TopDocs;

importorg.apache.lucene.store.RAMDirectory;

importorg.apache.lucene.util.Version;

importorg.wltea.analyzer.lucene.IKAnalyzer;

 

publicclass

IKAnalyzerDemo {

 

    /**

     *
@param args

     *
@throws IOException

     */

    publicstatic

void

main(String[] args)
throwsIOException
{

        //
TODO Auto-generated method stub

        //建立索引

        String
text1 =
"IK
Analyzer是一个结合词典分词和文法分词的中文分词开源工具包。它使用了全新的正向迭代最细粒度切"

+

                "分算法。";

        String
text2 =
"中文分词工具包可以和lucene是一起使用的";

        String
text3 =
"中文分词,你妹";

        String
fieldName =
"contents";

        Analyzer
analyzer =
newIKAnalyzer();

        RAMDirectory
directory =
newRAMDirectory();

        IndexWriterConfig
writerConfig =
newIndexWriterConfig(Version.LUCENE_34,
analyzer);

        IndexWriter
indexWriter =
newIndexWriter(directory,
writerConfig);

        Document
document1 =
newDocument();

        document1.add(newField("ID","1",
Field.Store.YES, Field.Index.NOT_ANALYZED));

        document1.add(newField(fieldName,
text1, Field.Store.YES, Field.Index.ANALYZED));

        indexWriter.addDocument(document1);

 

        Document
document2 =
newDocument();

        document2.add(newField("ID","2",
Field.Store.YES, Field.Index.NOT_ANALYZED));

        document2.add(newField(fieldName,
text2, Field.Store.YES, Field.Index.ANALYZED));

        indexWriter.addDocument(document2);

 

        Document
document3 =
newDocument();

        document3.add(newField("ID","2",
Field.Store.YES, Field.Index.NOT_ANALYZED));

        document3.add(newField(fieldName,
text3, Field.Store.YES, Field.Index.ANALYZED));

        indexWriter.addDocument(document3);

        indexWriter.close();

 

 

        //搜索

        IndexReader
indexReader = IndexReader.open(directory);

        IndexSearcher
searcher =
newIndexSearcher(indexReader);

        String
request =
"中文分词工具包";

        QueryParser
parser =
newQueryParser(Version.LUCENE_40,
fieldName, analyzer);

        parser.setDefaultOperator(QueryParser.AND_OPERATOR);

        try{

            Query
query = parser.parse(request);

            TopDocs
topDocs = searcher.search(query,
5);

            System.out.println("命中数:"+topDocs.totalHits);

            ScoreDoc[]
docs = topDocs.scoreDocs;

            for(ScoreDoc
doc : docs){

                Document
d = searcher.doc(doc.doc);

                System.out.println("内容:"+d.get(fieldName));

            }

        }catch(ParseException
e) {

            //
TODO Auto-generated catch block

            e.printStackTrace();

        }finally{

            if(indexReader
!=
null){

                try{

                    indexReader.close();

                }catch(IOException
e) {

                    e.printStackTrace();

                }

            }

 

            if(directory
!=
null){

                try{

                    directory.close();

                }catch(Exception
e) {

                    e.printStackTrace();

                }

            }

        }

 

    }

 

}

这段代码是将索引文件放入内存中(RAMDirectory),运行结果如下: 

?


1

2

3

4

加载扩展停止词典:stopword.dic

命中数:2

内容:中文分词工具包可以和lucene是一起使用的

内容:IK
Analyzer是一个结合词典分词和文法分词的中文分词开源工具包。它使用了全新的正向迭代最细粒度切分算法。

这段代码有两个问题: 
1、Field()已经不推荐按使用。 
2、QueryParser()的使用方式也改变了。 

下面是更加符合要求的示例。 

第二个示例:

MyIndex类用来创建索引: 

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

importorg.apache.lucene.analysis.Analyzer;

importorg.apache.lucene.document.*;

importorg.apache.lucene.document.Field.Store;

importorg.apache.lucene.index.IndexWriter;

importorg.apache.lucene.index.IndexWriterConfig;

importorg.apache.lucene.store.Directory;

importorg.apache.lucene.store.FSDirectory;

importorg.apache.lucene.util.Version;

importorg.wltea.analyzer.lucene.IKAnalyzer;

 

importjava.io.File;

 

 

publicclass

MyIndex {

    publicstatic

void

main(String[] args) {

        String
ID;

        String
content;

 

        ID
=
"1231";

        content
=
"BuzzFeed
has compiled an amazing array of "

+

                "ridiculously
strange bridesmaid snapshots, courtesy of Awkward Family Photos. "
;

        indexPost(ID,
content);

 

        ID
=
"1234";

        content
=
"Lucene是apache软件基金会4
jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包"
;

        indexPost(ID,
content);

 

        ID
=
"1235";

        content
=
"Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现";

        indexPost(ID,
content);

 

    }

 

    publicstatic

void

indexPost(String ID, String content) {

        File
indexDir =
newFile("/home/letian/lucene-test/index");

 

        Analyzer
analyzer =
newIKAnalyzer();

 

        TextField
postIdField =
newTextField("id",
ID, Store.YES); 
//
不要用StringField

        TextField
postContentField =
newTextField("content",
content, Store.YES);

 

        Document
doc =
newDocument();

        doc.add(postIdField);

        doc.add(postContentField);

        IndexWriterConfig
iwConfig =
newIndexWriterConfig(Version.LUCENE_4_10_1,
analyzer);

        iwConfig.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND);

        try{

            Directory
fsDirectory = FSDirectory.open(indexDir);

            IndexWriter
indexWriter =
newIndexWriter(fsDirectory,
iwConfig);

            indexWriter.addDocument(doc);

            indexWriter.close();

        }catch(Exception
e) {

            e.printStackTrace();

        }

    }

}

索引以文件的形式存储在/home/letian/lucene-test/index目录中,Field被替换成了TextField,注意对于全文索引,不要使用StringField。 
运行上面的代码,创建索引的结果如下: 
 

MySearch.java是一个搜索的示例: 

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

importorg.apache.lucene.analysis.Analyzer;

importorg.apache.lucene.document.Document;

importorg.apache.lucene.queryparser.classic.QueryParser;

importorg.apache.lucene.search.*;

importorg.apache.lucene.store.Directory;

importorg.apache.lucene.store.FSDirectory;

importorg.apache.lucene.index.DirectoryReader;

importorg.wltea.analyzer.lucene.IKAnalyzer;

 

importjava.io.File;

 

publicclass

MySearch {

    publicstatic

void

main(String[] args) {

        Analyzer
analyzer =
newIKAnalyzer();

        File
indexDir =
newFile("/home/letian/lucene-test/index");

        try{

            Directory
fsDirectory = FSDirectory.open(indexDir);

            DirectoryReader
ireader = DirectoryReader.open(fsDirectory);

            IndexSearcher
isearcher =
newIndexSearcher(ireader);

 

 

            QueryParser
qp =
newQueryParser("content",
analyzer);        
//使用QueryParser查询分析器构造Query对象

            qp.setDefaultOperator(QueryParser.AND_OPERATOR);

            Query
query = qp.parse(
"Lucene");    //
搜索Lucene

            TopDocs
topDocs = isearcher.search(query ,
5);     //搜索相似度最高的5条记录

            System.out.println("命中:"+
topDocs.totalHits);

            ScoreDoc[]
scoreDocs = topDocs.scoreDocs;

            for(inti
=
0;
i < topDocs.totalHits; i++){

                Document
targetDoc = isearcher.doc(scoreDocs[i].doc);

                System.out.println("内容:"+
targetDoc.toString());

            }

 

        }catch(Exception
e) {

 

        }

    }

}

得到的结果如下: 

?


1

2

3

命中:2

内容:Document<stored,indexed,tokenized<id:1234>
stored,indexed,tokenized<content:Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包>>

内容:Document<stored,indexed,tokenized<id:1235>
stored,indexed,tokenized<content:Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现>>

时间: 2024-11-05 22:34:23

整合Lucene 4.10.1 与IK Analyzer的相关文章

solr 实现 中文分词,IK Analyzer

solr默认是不支持中文分词的,这样就需要我们手工配置中文分词器,在这里我们选用IK Analyzer中文分词器. IK Analyzer下载地址:https://code.google.com/p/ik-analyzer/downloads/list 如图:     默认大家已经下载并解压了solr,在这里我们使用solr 4.10.4版本 试验环境centos 6.5 ,JDK1.7 整合步骤 1:解压下载的IK Analyzer_2012_FF_hf1.zip压缩包,把IKAnalyzer

ik analyzer分词器-IK Analyzer分词器使用的时候对于一些中文汉字分不出来

问题描述 IK Analyzer分词器使用的时候对于一些中文汉字分不出来 中文分词器 IK Analyzer对单个汉字有的分不出来怎么办??? 解决方案 添加扩展分词器,但不是最终的解决办法

河北钢铁业整合邯郸钢铁现10%套利空间

每经记者 张奇 与攀钢系重组波折不断不同,河北钢铁业重组(唐钢股份换股方式吸收合并邯郸钢铁和承德钒钛)相对平坦得多,现阶段仅差证监会批准,随后将以年产合计1939万吨成为国内第二大钢铁上市公司,仅次于宝钢股份. 相同的是,由于换股比例确认后股价的浮动,合并公司都出现了一定的套利空间.邯郸钢铁和唐钢股份换股比例为1:0.775,按照昨日两只个股收盘价计算,邯郸钢铁约有10%的套利空间:承德钒钛每股换1.089股的唐钢股份,也有3.82%的套利空间. 重组有望十月完成 河北钢铁业重组推出时期恰好是在

搜索引擎系统的原理和实践

>>搜索引擎的原理和分析指标 (1)搜索引擎的工作原理 搜索引擎的工作原理大致可以分为: 搜集信息:搜索引擎的一个部分可以实现信息自动搜集. 整理信息:搜索引擎通过创建索引为抓取到的信息添加规则. 接受查询:用户向搜索引擎输入关键词提交查询,系统接受用户查询,并且排序后并返回查询结果.搜索引擎根据每个用户的不同关键词检查索引库,迅速找到用户需要的资料,并返回给用户.目前,搜索查询结果主要是以含有部分摘要信息的网页链接给出的,这样利用上述链接,使用者可以访问含有所需资料的站点与网页.一般情况下,

Lucene 3.6.2入门(11) 高亮

package com.jadyer.lucene; import java.io.File; import java.io.IOException; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexReader; i

Lucene 3.6.2入门(1) 第一个程序:Hello Word

package com.jadyer.lucene; import java.io.File; import java.io.FileReader; import java.io.IOException; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; i

使用肖波的KTDictSeg分词器 为Lucene.net服务

最近在看Lucene.net 发现Lucene.net的中文分词资料不是很多,很早就在看肖波的KTDictSeg,觉的分词效果不错,但是没有lucene接口,看他的blog也是很长时间没有更新了 他在他的blog中提到将在下一个版本中提供对lucene的支持,我这里期待中...同时blog中提到一挥的修改版本,但是一挥的站打不开了,不知道什么原因,我刚刚看这个时间不长,查了些资料 写了下面的代码实现了KTDictSeg在Lucene.net中的调用,期待有更好的方法出现 下面附上代码 1usin

Elasticsearch 默认配置 IK 及 Java AnalyzeRequestBuilder 使用

摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 春夏秋冬失去了你,我怎么过一年四季- 民谣歌词 』 本文提纲 一.什么是 Elasticsearch-analysis-ik 二.默认配置 IK 三.使用 AnalyzeRequestBuilder 获取分词结果 四.小结 运行环境:JDK 7 或 8.Maven 3.0+.ElasticSearch 2.3.2.Elasticsearch-analysis-ik 1.9.2 技术栈:

基于lucene搜索引擎的Hibernate Search,官方文档翻译

由于自己的项目需要用到搜索引擎,于是想到使用lucene,封装了lucene的框架有compass,solr,hibernate search. 网上对这些框架的描述有: Compass:是在Lucene的基础上做了封装,支持索引事务控制和增量索引,同时也能够和主流的SSH框架完美地整合在一起,操作Compass类似于操作Hibernate,它们的类/方法等设计的非常相似. 项目主页:http://www.compass-project.org/ 该项目已经很久没有更新维护了,官方网站显示最后维