簡體   English   中英

如何使用Lucene在句子中搜索關鍵字

[英]How to search the keywords inside a sentence using lucene

我收到供應商名稱及其地址作為字符串,我在Lucene中將其索引為,,,。 現在,從另一個servlet中,我收到包含供應商名稱和地址的文本。 例如,“我在商店中使用信用卡xxxxx時遇到問題”,或“我的商店中的信用卡被拒絕”。 我刪除了諸如“我”,“在”,“在”,“商店”等中的停用詞,並使用“”顯示了清晰的文字。 我需要從vendor_name或給定文本內的區域中找到所有那些賣方。

這就是我索引供應商詳細信息的方式。 文件中的每一行都是一個供應商,其詳細信息用逗號分隔。 、、、

FieldType keywordFieldType = new FieldType();
        keywordFieldType.setStored(true);
        keywordFieldType.setIndexed(true);
        keywordFieldType.setTokenized(false);
        writer = new IndexWriter(dir, iwc);
        BufferedReader reader = new BufferedReader(new FileReader(
                VENDOR_DETAILS));
        String line = reader.readLine();
        while (line != null) {
            Document document = new Document();
            document.add(new Field("content", line.toLowerCase(),
                    keywordFieldType));
            writer.addDocument(document);
            line = reader.readLine();
        }
        writer.commit();

這就是我搜索索引的方式

QueryParser queryParser = new QueryParser(VERSION, "content",
            new WhitespaceAnalyzer(VERSION));

    String special = "content:" + stringToQuery.trim();
    try {
        if (searcherManager == null) {
            searcherManager = new SearcherManager(
                    FSDirectory.open(new File(INDEX_DIRECTORY)),
                    new SearcherFactory());
        }
        searcher = searcherManager.acquire();
        TopDocs docs = searcher.search(queryParser.parse(special), 100);
        int hitCount = docs.totalHits;

如何查詢Lucene來搜索以上要求? 我應該使用哪種類型的查詢來查找給定文本內的供應商詳細信息?

您要添加的文檔沒有標記化,但是正在標記化查詢,因此查詢和索引時的分析不匹配。 由於該字段似乎是自由文本,因此標記化標記對於有效搜索很重要。 我不建議完全指定FieldType,而建議僅使用TextField 您可以像在查詢時一樣在兩者上同時使用WhitespaceTokenizer ,但是我認為StandardAnalyzer是更好的起點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM