当前位置: 首页 > 面试题库 >

如何使用Lucene Analyzer标记字符串?

蒋无尘
2023-03-14
问题内容

有没有一种简单的方法可以使用Lucene的任何子类Analyzer来解析/标记a String

就像是:

String to_be_parsed = "car window seven";
Analyzer analyzer = new StandardAnalyzer(...);
List<String> tokenized_string = analyzer.analyze(to_be_parsed);

问题答案:

据我所知,您必须自己编写循环。这样的事情(直接取自我的源代码树):

public final class LuceneUtils {

    public static List<String> parseKeywords(Analyzer analyzer, String field, String keywords) {

        List<String> result = new ArrayList<String>();
        TokenStream stream  = analyzer.tokenStream(field, new StringReader(keywords));

        try {
            while(stream.incrementToken()) {
                result.add(stream.getAttribute(TermAttribute.class).term());
            }
        }
        catch(IOException e) {
            // not thrown b/c we're using a string reader...
        }

        return result;
    }  
}


 类似资料:
  • 问题内容: 我希望能够对文本框中的输入字符串进行标记化以进行查询。示例:用户在文本框中输入“ abc xyz 123”。我想做这个: 谢谢。 问题答案: 使用一个字符串拆分函数,您可能会得到如下所示的内容:

  • 问题内容: 如果我有一个字符串变量,谁的值是如何使用空格作为分隔符来对此进行标记?我会用吗? 问题答案: 使用外壳程序对未加引号的变量的自动标记化: 如果要更改定界符,则可以设置变量,该变量代表内部字段分隔符。的默认值是(空格,制表,换行)。 (请注意,在第二个示例中,我在第二行周围添加了括号。这创建了一个子shell,因此对的更改不会持续。您通常不想永久更改,因为它可能会对毫无疑问的shell命

  • 我有一个需求,需要从JAXB生成XML。我使用了基本对象,其中只有具有父子关系的键值对,但从未遇到过下面这样的情况。预期的XML 在Java对象中,我不知道如何使用特殊字符

  • 问题内容: 我正在使用nltk,因此我想创建自己的自定义文本,就像nltk.books上的默认文本一样。但是,我只是想起像 我想发现任何输入“文本”的方式: python或nltk的哪种方法允许我执行此操作。更重要的是,我如何消除标点符号? 问题答案: 这实际上是在nltk.org的主页上:

  • 但它显示。我如何解决这个问题?