- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这可以被视为一般 Java 问题,但为了更好地理解,我使用 Lucene 作为示例。
您可以在 Lucene 中使用不同的分词器来分词文本。有主要的抽象 Tokenizer 类,然后是许多扩展它的不同类。 TokenFilter 也是如此。
现在,似乎每次要索引文档时,都会创建一个新的 Tokenizer。问题是,既然 Tokeinzer 只是一个实用类,为什么不让它静态化呢?例如,将所有字母转换为小写的 Tokenizer 可以有一个静态方法,该方法只对它获得的每个输入执行此操作。为我们要索引的每段文本创建一个新对象有什么意义?
有一件事值得一提——Tokeinzer 有一个私有(private)字段,其中包含它接收到的要标记化的输入。我只是不明白为什么我们需要以这种方式存储它,因为对象在标记化过程结束并返回新的标记化文本后立即被销毁。我唯一能想到的可能是多线程访问?
谢谢!
最佳答案
Now, it seems that each time you want to index a document, a new Tokenizer is created
这不是真的,Analyzer.reusableTokenStream 方法被调用,它重新使用不仅仅是 Tokenizer,还有整个链(TokenFilters 等)。参见 http://lucene.apache.org/java/3_0_0/api/core/org/apache/lucene/analysis/Analyzer.html#reusableTokenStream(java.lang.String , java.io.Reader)
One thing to mention - Tokeinzer has a private field that contains the input it receives to tokenize. I just don't see why we need to store it this way because the object is destroyed right after the tokenization process is over and the new tokenized text is returned. The only thing I can think of is multi-threaded access maybe?
如前所述,整个分词器和分词过滤器链在文档中重复使用。因此它们的所有属性都被重用,但同样重要的是要注意属性是跨链共享的(例如,所有 Tokenizers 和 TokenFilters 的属性引用都指向相同的实例)。这就是为什么在标记器中调用 clearAttributes() 以重置所有属性至关重要。
例如,Whitespace 分词器在其构造函数中添加了对 TermAttribute 的引用,并由 LowerCaseFilter 包装,后者也在其构造函数中添加了对 TermAttribute 的引用。这两个 TermAttributes 都指向相同的底层 char[]。处理新文档时,将调用 Analyzer.reusableTokenStream,它返回与上一个文档中使用的相同的 TokenStream 链(在本例中为用 LowerCaseFilter 包装的 Whitespace)。调用 reset(Reader) 方法,将分词器的输入重置为新的文档内容。最后,在整个流上调用 reset(),这会重置前一个文档的所有内部状态,并处理内容,直到 incrementToken() 返回 false。
关于lucene - Lucene 对文本进行分词的过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4684960/
大家好,其实我快疯了,我竭尽全力解决这个简单的问题。 如您所见,狭窄空间中的简单标签导致单个单词“Verification”被分成两行,这当然是 Not Acceptable 。 我知道我只能将行数设
我正在尝试创建类似句子的东西,其中包含随机单词。具体来说,我会有类似的东西: "The weather today is [weather_state]." 并且能够做一些事情,比如找到 [brack
我希望我的导航栏 (.top-bar) 比现在更具响应性。目前,如果屏幕缩小太多,.top-bar-right 类只会下降到 .menu 类之下。我需要 .top-bar-right 来分割自己或打破
我正在尝试编写一个函数来将命令行参数解析为一个 vector 。问题是我似乎无法消除使用全局指针数组作为 vector 。 代码是: /** parse command line arguments
我正在做一些分词实验,如下所示。 lst是一个字符序列,output是所有可能的词。 lst = ['a', 'b', 'c', 'd'] def foo(lst): ... retu
我正在尝试解决 this问题。问题如下 给定一个输入字符串和一个单词字典,看看是否可以将输入字符串分割成以空格分隔的字典单词序列。 字典是一个字符串数组。 我的方法是以下递归 fn 并存储递归调用的结
我正在研究这个问题。似乎我找到了正确的答案并返回 true,但随后它被 false 覆盖。Java 新手,抱歉,如果这是一个虚拟问题。我如何返回 true?预先感谢您 问题给定一个字符串 s 和一本单
我正在使用 word-break css 属性,但即使是一个简单的示例似乎也无法让它工作。我的代码是: react : render() { return ( A very very lo
我正在尝试更改 word-break某些内联元素的属性,例如 和 以获得更好的页面内容流。 Firefox 似乎只识别显示为 block 的元素的分词属性(例如 ),而 Chrome 尊重分词的请求
我想标记用户输入的任何字符串。我的代码是这样的: #include #include #include int main(void) { char str; char *toke
有没有办法让单词正确对齐?我尝试添加 word-break 和 word-wrap 属性,但没有任何不同。 Subtotal S$42.50 Tota
如何防止 Bash 拆分子字符串中的单词?这是一个有点人为的例子来说明这个问题: touch file1 'foo bar' FILES="file1 'foo bar'" ls -la $FILES
我正在创建一个非常薄的页面(它被打印在收据纸上:56 毫米宽) 我正在尝试显示一些文本(在本例中为运送选择)。有时这个文本是正常的一些间隔单词,例如'Signed for 1st Class',有时是
我正在尝试弄清楚 IFS 如何影响 bash 中的分词。该行为依赖于上下文,其方式似乎与分词的直觉不符。 总体思路似乎很简单。引自 bash 手册页: The shell treats each ch
今天我 Handlebars 机升级到 iOS7,发现了一些奇怪的问题。 (博客.niwyclin.org)这是我网站的测试帖子页面 在桌面浏览器上它看起来不错。 我用Responsivator查了一
我在 jsfiddle 中有以下示例: https://jsfiddle.net/27L545rr/3/ Word-break should cause just the extra charact
我有一个应用程序,我需要解析或标记 XML 并保留原始文本(例如,不解析实体、不转换属性中的空格、保持属性顺序等)在 Java 程序中。 我今天花了几个小时尝试使用 StAX、SAX、XSLT、Tag
到目前为止,这是我的代码: ssssssssssssssssssssssssssssssssssssss 但是, word-wrap:break-word; word-br
我正在尝试使用 word-break打破一个长字符超过其父宽度的单词。 在这个例子中,我有一个 与 width:43px和里面的“玩”字。在 chrome 中,这个词很合适,但在 Firefox 中,
list(gensim.utils.simple_preprocess("i you he she I it we you they", deacc=True)) 给出结果: ['you', 'he'
我是一名优秀的程序员,十分优秀!