你好-

TermQuery is for a specific term, which is typically the end result of analysis. It doesn't make sense to use an Analyzer to construct a TermQuery. However, you can use an Analyzer yourself to construct TermQuery's, just as QueryParser does.

Look at the AnalysisDemo (Java) code in my old article here: http:// today.java.net/pub/a/today/2003/07/30/LuceneIntro.html

It will show you how to use an Analyzer and walk its TokenStream. For each token you can construct the TermQuery of your choice.

        Erik


On Aug 26, 2007, at 1:20 PM, Li Bing wrote:

Hi, all,

I am new in Lucene.NET. Now I use it to build a search engine. But I
notice one problem, that I cannot specify Analyzer when using
TermQuery to create a Query. A sample is shown as follows.

        public Hits SearchByMultipleKeywords(string  fsDirectory, string
searchType, ArrayList keywordList)
        {
                IndexSearcher indexSearcher = new IndexSearcher(fsDirectory);
                Term term;
                TermQuery termQuery;
                BooleanQuery booleanQuery = new BooleanQuery();
                foreach (string keyword in keywordList)
                {
                        term = new Term(searchType, keyword);
                        termQuery = new TermQuery(term);
                        booleanQuery.Add(termQuery, BooleanClause.Occur.MUST);
                }

                return indexSearcher.Search(booleanQuery);
        }

In the above code, how to specify a particular Analyzer, such as
ChineseAnalyzer? I have got a way to do that. If so, the above code
does not work with Chinese searching. The only way to achieve
BooleanQuery is to use QueryParser because QueryParser can be
constructed with a ChineseAnalyzer. Is it true?

Thanks so much!
Li Bing

Reply via email to