我使用lucene 3来索引一些这样的txt文件。
$xml = simplexml_load_string($your_html_here);
$images = $xml->xpath("//img/@src");
foreach ($images as $image) {
$parsed = parse_url($image);
print_r($parsed);
}
getHitCount函数返回英文单词的命中数,但是按波斯语单词,它返回零!
public static void main(String[] args) throws Exception {
String indexDir = "file input";
String dataDir = "file input";
long start = System.currentTimeMillis();
indexer indexer = new indexer(indexDir);
int numIndexed, cnt;
try {
numIndexed = indexer.index(dataDir, new TextFilesFilter());
cnt = indexer.getHitCount("mycontents", "شهردار");
System.out.println("count of search in contents: " + cnt);
} finally {
indexer.close();
}
long end = System.currentTimeMillis();
System.out.println("Indexing " + numIndexed + " files took "
+ (end - start) + " milliseconds");
}
如何在我的项目中设置utf-8?我使用netbeans并创建一个简单的java项目。 我只需要在文件中进行简单的搜索!
这是我的索引器类:
public int getHitCount(String fieldName, String searchString)
throws IOException, ParseException {
IndexSearcher searcher = new IndexSearcher(directory);
Term t = new Term(fieldName, searchString);
Query query = new TermQuery(t);
int hitCount = searcher.search(query, 1).totalHits;
searcher.close();
return hitCount;
}
答案 0 :(得分:0)
我怀疑问题本身不是Lucene的编码,而是FileReader
。来自FileReader文档:
此类的构造函数假定默认字符编码和默认字节缓冲区大小是合适的。
在这种情况下,默认字符编码可能不合适。
而不是:
doc.add(new Field("mycontents", new FileReader(f)));
尝试(假设要编入索引的文件是UTF-8编码):
doc.add(new Field("mycontents", new InputStreamReader(new FileInputStream(f), "UTF8")));