当前位置: 首页 > 知识库问答 >
问题:

我的Lucene代码出了什么问题?

阚乐湛
2023-03-14

我有一个可搜索的术语数组,我想使用Lucene基本上CTRL-F通过这个文档堆栈,找到并存储所有这些术语在该文档堆栈中的位置。例如:

术语:“A”、“B”、“C”

    null

差不多吧。我怎么能这么做?到目前为止,我只是使用一个StandardAnalyzer,如下所示:

public Analyzer _analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30);

// for some directory defined here

using (var indexWriter = new IndexWriter(directory, _analyzer, true, new IndexWriter.MaxFieldLength(IndexWriter.DEFAULT_MAX_FIELD_LENGTH)))
{
    using (var textReader = new StreamReader(blobStream))
    {
        // this code should analyze and write my indexes to the lucene instance

        var text = await textReader.ReadToEndAsync();
        var document = new Document();
        document.Add(new Field("Text", text, Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
        document.Add(new Field("DocId", docId.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
        document.Add(new Field("FamilyId", familyId.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
        indexWriter.AddDocument(document);
    }
}

Lucene最初会生成很多文档,但后来删除了除。cfs文件以外的所有文档。我如何保留其他文件来执行我的查询?

共有1个答案

呼延辰龙
2023-03-14

若要对任意字符位置进行索引,可以使用NgramTokenizer。创建索引时,还应该使用FieldType.SetStoreTermVectors(true);FieldType.SetStoreTermVectorPositions(true);,以便实际存储术语的位置。看看这个问题,它有正确的代码来检索问题中已经存在的术语位置。

 类似资料:
  • 问题内容: 这段代码什么也没给我返回,您能帮我为什么不收回价值吗? 问题答案: 你是那个意思吗 还是真的是t1.wid = t2.wid?在这种情况下,您需要左联接。 编辑 好的,所以您已修复它。除非t2中有行的wid与t1中具有相同wid的行匹配的wid,否则不会显示任何结果。 如果需要结果,请将其更改为: 下一步编辑 如果目标是使用t2中尚未存在的t1中的值更新t2,则可能是这样的: 缺少的步

  • 我试图解决Dijkstra算法上的一个hackerrank问题--https://www.hackerrank.com/challenges/dijkstrashortreach。我在使用我自己的Dijkstra代码逻辑。虽然我的代码解决了更容易的测试用例,但它在更高的测试用例上失败了。我猜我的代码在某个地方缺少了一些传递性,并且我得到的某个节点的值高于预期。你能帮我找出我的错误吗?问题:输入格式

  • 我拿不到输出。。有人能帮我得到输出吗 下面给出了程序运行的示例(注意:下面的粗体文本是用户输入的输入): 输入三角形的三条边

  • 问题内容: 这是我的整个源代码: 代码卡在了 fmt.Println(“ enq =”,t)上, 但是我不知道为什么,这太奇怪了。 问题答案: deQueue在失败情况下无限循环,这阻塞了CPU。Goroutine在执行CPU工作时不会屈服。GOMAXPROCS必须大于等于2才能获得CPU并行性。 只是为了踢,这是使用高阶通道的线程安全,无阻塞队列实现:https : //gist.github.

  • 给定一个0和1的数组,我们最多可以将K个值从0更改为1。 返回仅包含1的最长(连续)子数组的长度。 例1: 例2: 注: https://leetcode.com/problems/max-consecutive-ones-iii/ 这是问题链接。在第一个测试用例中,我得到了输出9,但应该是6。我不知道哪里出了问题?

  • 对不起,我是android应用程序的新手。创造。我已经提到了几乎所有的解决方案,但这就是不工作...我没有看到任何问题,在下面的简单代码。我的应用程序很简单,加载启动屏幕,然后加载WebView。下面的问题是什么? [评论]请。看下面,我已经声明了。怎么了? java:这将加载WebView。 } activity_main.xml: