【问题标题】:Lucene index searchingLucene 索引搜索
【发布时间】:2012-10-22 21:57:52
【问题描述】:

我是第一次使用 Lucene 索引。我有一些印地语和英语的文档,我在文档的内容上创建了索引。当我搜索索引时,我从所有文档中得到结果,即使我的查询是一些英文单词,它也会返回印地语文档。我已经添加了下面的代码。请告诉我我哪里错了。

        IndexSearcher searcher = new IndexSearcher(directory);
        QueryParser parser = new QueryParser("Content", analyzer);



        while (condition)
        {
            Search(text, searcher, parser);

        }


        searcher.Close();
        private static void Search(string text, IndexSearcher searcher, QueryParse parser)
    {
        Query query = parser.Parse(text);

        Hits hits = searcher.Search(query);
        int results = hits.Length();

        for (int i = 0; i < results; i++)
        {
            Lucene.Net.Documents.Document doc = hits.Doc(i);

            string show = doc.ToString();

            float score = hits.Score(i);

            /* insert doc id in database table*/

            }

谢谢大家

【问题讨论】:

    标签: search lucene indexing


    【解决方案1】:

    首先,我会使用Luke 来检查我的查询语法是否正确。然后我会检查行为不端的英语单词是否是印地语单词的同形异形词(即与印地语单词拼写相同的英语单词)。

    如果您想阻止在印地语文档中搜索英文搜索词,您需要标记每个文档是英文还是印地语,然后在搜索查询中指定该标记。在查询解析器语法中,这可能如下所示:

    ENGLISHSEARCHTERMS +(language:English)
    

    (所有印地语文档的语言字段设置为“印地语”,所有英语文档的语言字段设置为“英语”)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      相关资源
      最近更新 更多