[英]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.