Webmethods 응용 프로그램에서 검색 기능을 구현해야하는데 Lucene을 사용했습니다. 그러나 alpabet.for와 같은 다른 제목으로 끝나는 제목을 가진 파일을 검색 할 때 검색 결과를 검색하지 않습니다. - doc1.txt 또는 new $ .txt
아래 코드에서 을 인쇄하려고하면 아래의 코드가 인쇄됩니다. 인쇄 검색 결과 >>>>>>> title : "doc1 txt"(내용 : doc1 내용 : txt). doc.txt와 같은 문자열을 검색하면 검색 결과는 >>>>>>> title : " doc.txt "내용 : doc.txt. 이러한 종류의 문자열 (doc1.txt, new $ .txt 등)을 파싱하려면 어떻게해야합니까?알파벳이 아닌 문자로 끝나는 Lucene 텍스트 검색이 없습니다.
public java.util.ArrayList<DocNames> searchIndex(String querystr,
String path, StandardAnalyzer analyzer) {
String FIELD_CONTENTS = "contents";
String FIELD_TITLE = "title";
String queryStringCmbd = null;
queryStringCmbd = new String();
String queryFinal = new String(querystr.replaceAll(" ", " AND "));
queryStringCmbd = FIELD_TITLE + ":\"" + queryFinal + "\" OR "
+ queryFinal;
try {
FSDirectory directory = FSDirectory.open(new File(path));
Query q = new QueryParser(Version.LUCENE_36, FIELD_CONTENTS,
analyzer).parse(querystr);
Query queryCmbd = new QueryParser(Version.LUCENE_36,
FIELD_CONTENTS, analyzer).parse(queryStringCmbd);
int hitsPerPage = 10;
IndexReader indexReader = IndexReader.open(directory);
IndexSearcher indexSearcher = new IndexSearcher(indexReader);
TopScoreDocCollector collector = TopScoreDocCollector.create(
hitsPerPage, true);
indexSearcher.search(queryCmbd, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;
System.out
.println("Search Results>>>>>>>>>>>>"
+ queryCmbd);
docNames = new ArrayList<DocNames>();
for (int i = 0; i < hits.length; ++i) {
int docId = hits[i].doc;
Document d = indexSearcher.doc(docId);
DocNames doc = new DocNames();
doc.setIndex(i + 1);
doc.setDocName(d.get("title"));
doc.setDocPath(d.get("path"));
if (!(d.get("path").contains("indexDirectory"))) {
docNames.add(doc);
}
}
indexReader.flush();
indexReader.close();
indexSearcher.close();
return docNames;
} catch (CorruptIndexException e) {
closeIndex(analyzer);
e.printStackTrace();
return null;
} catch (IOException e) {
closeIndex(analyzer);
e.printStackTrace();
return null;
} catch (ParseException e) {
closeIndex(analyzer);
e.printStackTrace();
return null;
}
}
정말 고맙습니다. 그러나 KeywordAnalyzer를 사용하여 'X X X X X X X X X X X'또는 공백이 포함 된 검색 문자열의 경우 파일을 찾을 수 있습니까? 시도했지만 결과를 얻지 못했습니다? 그런 경우에는 무엇을 할 수 있습니까? 친절하게 도와주세요 – Cheese
자세한 내용을 입력해야합니다. 가장 좋은 방법은 새 질문을 열고 코드를 보여주는 것입니다. 또한이 대답이 도움이 되었다면, 당신이 그것을 받아들이기를 원할 수도 있습니다. 그렇지 않으면 사람들이 대답을 제공하는 것을 멈 춥니 다. – mindas