在使用Lucene的过程中,我有点disapointed。 我没有看到或理解我应该如何着手的东西,已经是直接可转位喂任何Lucene的分析仪。 或者,应该怎样着手创建自己的分析...
例如,如果我有一个List<MyCustomToken>
它已经包含了许多令牌(与约大写等,我也想索引每个MyCustomToken的功能实际上有更多的信息)
如果我没有理解清楚我已阅读,我需要继承一个分析器,它会叫我自己的分词器继承一个的TokenStream,在这里我将只需要提供一个public final boolean incrementToken()
会做插入的工作TermAttribute
@位置。
顺便说一句,这里就是我感到困惑=>这是的TokenStream中java.io.Reader的一个子类,并且因此仅能够分析像一个文件,一个串中的目标流的...
我怎么能继续有自己的文档分析器会消耗我的列表,而这个吴丹流的编一个?
看起来整个Lucene的API上,它首先开始分析@一个非常低的水平是“字”的观点理念建造,而我需要开始使用它以后/插头从已经符号化的话,甚至表情(组话)。
Lucene的用法的典型样本都是这样(摘自这里 ):
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);
// 1. create the index
Directory index = new RAMDirectory();
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_35, analyzer);
IndexWriter w = new IndexWriter(index, config);
addDoc(w, "Lucene in Action"); // BUT here i would like to have a addDoc(w, MyOwnObject)
addDoc(w, "Lucene for Dummies");
addDoc(w, "Managing Gigabytes");
addDoc(w, "The Art of Computer Science");
w.close();
[...]
private static void addDoc(IndexWriter w, String value) throws IOException {
Document doc = new Document();
doc.add(new Field("title", value, Field.Store.YES, Field.Index.ANALYZED));
// SO that i can add here my own analysis base on many fields, with them built from a walk through List or complex structures...
w.addDocument(doc);
}
PS:(我的Java / Lucene的知识仍然很差,所以我可能错过一些明显的关于读者<=>列表模式?)
这个问题几乎是和我一样的Lucene名单
编辑:@ Jilles面包车Gurp =>是的,你说的很对,这是另一个问题。我想的,但首先希望找到一个更好的解决方案。 所以,如果继续,我还是可以做一些系列化,满足这种序列化的字符串作为文档我自己的分析,和自己的标记生成器,然后将反序列化和重新做一些基本的标志化(实际上,刚刚经历已经做了一个走...)BTW它会增加,我将不得不像避免一些慢又笨额外的步骤...
关于这部分=>是否有人有最近(Lucene的> 3.6)自定义标记生成器提供必要的Lucene索引的所有基础数据的任何样本? 我已经读到这样的发光令牌:
posIncrement.setPositionIncrement(increment);
char[] asCharArray = myAlreadyTokenizedString.toCharArray(); // here is my workaround
termAttribute.copyBuffer(asCharArray, 0, asCharArray.length);
//termAttribute.setTermBuffer(kept);
position++;
对于为什么我在这里的一部分,它是我用,即记号化我的文字一些外部库,做兼职的词性一些注释,其他分析(人们可能会想到一个表情识别或命名实体识别,也可以包括一些特殊的功能有关的资本,等等),我想保持在Lucene索引轨道(真正的一部分让我感兴趣的是索引和查询 ,而不是分析的第一步,这几乎是从Lucene的libary只Tokenising什么,我已阅读)。
(另外,我不认为我可以从这些以前/早期步骤做一些更聪明,因为我用许多不同的工具,不是所有的人都是Java或可以很容易地缠到Java)
所以我觉得这是有点难过,那Lucene的是瞄准@文字工作是如此界字/标记(字符序列),而文字是不是只单/孤立的单词/令牌并列更多...