/// <summary> /// Returns a <see cref="TokenStream"/> suitable for <paramref name="fieldName"/>, tokenizing /// the contents of <c>text</c>. /// <para/> /// This method uses <see cref="CreateComponents(string, TextReader)"/> to obtain an /// instance of <see cref="TokenStreamComponents"/>. It returns the sink of the /// components and stores the components internally. Subsequent calls to this /// method will reuse the previously stored components after resetting them /// through <see cref="TokenStreamComponents.SetReader(TextReader)"/>. /// <para/> /// <b>NOTE:</b> After calling this method, the consumer must follow the /// workflow described in <see cref="Analysis.TokenStream"/> to properly consume its contents. /// See the <see cref="Lucene.Net.Analysis"/> namespace documentation for /// some examples demonstrating this. /// </summary> /// <param name="fieldName"> the name of the field the created <see cref="Analysis.TokenStream"/> is used for </param> /// <param name="reader"> the reader the streams source reads from </param> /// <returns> <see cref="Analysis.TokenStream"/> for iterating the analyzed content of <see cref="TextReader"/> </returns> /// <exception cref="ObjectDisposedException"> if the Analyzer is disposed. </exception> /// <exception cref="IOException"> if an i/o error occurs (may rarely happen for strings). </exception> /// <seealso cref="GetTokenStream(string, string)"/> public TokenStream GetTokenStream(string fieldName, TextReader reader) { TokenStreamComponents components = reuseStrategy.GetReusableComponents(this, fieldName); TextReader r = InitReader(fieldName, reader); if (components == null) { components = CreateComponents(fieldName, r); reuseStrategy.SetReusableComponents(this, fieldName, components); } else { components.SetReader(r); } return(components.TokenStream); }
/// <summary> /// Returns a <see cref="Analysis.TokenStream"/> suitable for <paramref name="fieldName"/>, tokenizing /// the contents of <paramref name="text"/>. /// <para/> /// This method uses <see cref="CreateComponents(string, TextReader)"/> to obtain an /// instance of <see cref="TokenStreamComponents"/>. It returns the sink of the /// components and stores the components internally. Subsequent calls to this /// method will reuse the previously stored components after resetting them /// through <see cref="TokenStreamComponents.SetReader(TextReader)"/>. /// <para/> /// <b>NOTE:</b> After calling this method, the consumer must follow the /// workflow described in <see cref="Analysis.TokenStream"/> to properly consume its contents. /// See the <see cref="Lucene.Net.Analysis"/> namespace documentation for /// some examples demonstrating this. /// </summary> /// <param name="fieldName">the name of the field the created <see cref="Analysis.TokenStream"/> is used for</param> /// <param name="text">the <see cref="string"/> the streams source reads from </param> /// <returns><see cref="Analysis.TokenStream"/> for iterating the analyzed content of <c>reader</c></returns> /// <exception cref="ObjectDisposedException"> if the Analyzer is disposed. </exception> /// <exception cref="IOException"> if an i/o error occurs (may rarely happen for strings). </exception> /// <seealso cref="GetTokenStream(string, TextReader)"/> public TokenStream GetTokenStream(string fieldName, string text) { TokenStreamComponents components = reuseStrategy.GetReusableComponents(this, fieldName); ReusableStringReader strReader = (components == null || components.reusableStringReader == null) ? new ReusableStringReader() : components.reusableStringReader; strReader.SetValue(text); var r = InitReader(fieldName, strReader); if (components == null) { components = CreateComponents(fieldName, r); reuseStrategy.SetReusableComponents(this, fieldName, components); } else { components.SetReader(r); } components.reusableStringReader = strReader; return(components.TokenStream); }