我想将一个单词划分为标记。例如,我搜索了“饭盒”这个词。我想用JAVA把它分成“午餐”,“盒子”。
String name = "lunchbox";
StringTokenizer tokenizer = new StringTokenizer(name, "^\\s*\\S+\\s*$");
while (tokenizer.hasMoreTokens()) {
System.out.println(tokenizer.nextToken());
}
我尝试了这个但是没有用。 我也想知道我是否可以使用弹性搜索实现这一目标。
答案 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,以便为您的目的找到合适的分析器。