0
我正在開發基於Spring-MVC的應用程序中集成的Lucene搜索和索引,目前我正在使用通配符查詢搜索,但它不適用於個案 - 敏感的方式。有任何想法嗎?Java,Lucene:不區分大小寫的搜索不適用於WildCard查詢
當我輸入Ideas時,我得到了結果,但不是想法。
代碼:
@Override
public synchronized void saveIndexes(String text, String tagFileName, String filePath, long groupId, boolean type, int objectId) {
try {
Directory directory = org.apache.lucene.store.FSDirectory.open(path);
IndexWriterConfig config = new IndexWriterConfig(new SimpleAnalyzer());
IndexWriter indexWriter = new IndexWriter(directory, config);
org.apache.lucene.document.Document doc = new org.apache.lucene.document.Document();
if (filePath != null) {
File file = new File(filePath); // current directory
doc.add(new TextField("path", file.getPath(), Field.Store.YES));
}
doc.add(new StringField("id", String.valueOf(objectId), Field.Store.YES));
// doc.add(new TextField("id",String.valueOf(objectId),Field.Store.YES));
if (text == null) {
if (filePath != null) {
FileInputStream is = new FileInputStream(filePath);
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder stringBuffer = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
stringBuffer.append(line).append("\n");
}
stringBuffer.append("\n").append(tagFileName);
if(groupNotes!=null){
stringBuffer.append(String.valueOf(groupNotes.getNoteNumber()));
}
reader.close();
doc.add(new TextField("contents", stringBuffer.toString(), Field.Store.YES));
}
}
}
//搜索代碼
@Override
public List<Integer> searchLucene(String text, long groupId, boolean type) {
Directory directory = FSDirectory.open(path);
IndexReader indexReader = DirectoryReader.open(directory);
IndexSearcher indexSearcher = new IndexSearcher(indexReader);
Query query = new WildcardQuery(new Term("contents","*"+text + "*"));
TopDocs topDocs = indexSearcher.search(query, 50);
for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
org.apache.lucene.document.Document document = indexSearcher.doc(scoreDoc.doc);
objectIds.add(Integer.valueOf(document.get("id")));
System.out.println("Text is "+document.get("contents"));
}
indexSearcher.getIndexReader().close();
directory.close();
}
謝謝。
也一樣。謝謝。 –