如何使用java API标记单词?

时间:2016-05-06 09:45:21

标签: java elasticsearch

我想将一个单词划分为标记。例如,我搜索了“饭盒”这个词。我想用JAVA把它分成“午餐”,“盒子”。

String name = "lunchbox";
    StringTokenizer tokenizer = new StringTokenizer(name, "^\\s*\\S+\\s*$");
    while (tokenizer.hasMoreTokens()) {
        System.out.println(tokenizer.nextToken());
    }

我尝试了这个但是没有用。 我也想知道我是否可以使用弹性搜索实现这一目标。

2 个答案:

答案 0 :(得分:0)

如果您希望Elasticsearch以自定义方式对您的文字进行标记,则可以使用自定义分析器:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-custom-analyzer.html

答案 1 :(得分:0)

由于您使用的是ElastichSearch,因此您可以轻松使用Lucene提供的API。例如,以下代码显示了LetterTokenizer的用法,TokenStream tokenStream = new LetterTokenizer(new StringReader(document.trim())); CharTermAttribute charTermAttribute = tokenStream .addAttribute(CharTermAttribute.class); tokenStream.reset(); while (tokenStream.incrementToken()) { String string = charTermAttribute.toString(); //Do something with your string } tokenStream.close(); 是一个以非字母分割文本的标记生成器。

<?php
use kartik\mpdf\Pdf;
return [
 'pdf' => [
        'class' => Pdf::className(),
        'format' => Pdf::FORMAT_A4,
        'orientation' => Pdf::ORIENT_PORTRAIT,
        'destination' => Pdf::DEST_BROWSER,
        'methods' => [
            'SetHeader' => 'Merlano PVT LTD',
            'SetFooter'=> 'Flamez',
        ],
    ],
];

您可以进一步调查Lucene API,以便为您的目的找到合适的分析器。