1.导lucene依赖我使用的是5.3.1的
2.创建索引
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value={"classpath:springMVC.xml"})
public class LuceneTest{
@Autowired
private StreetMapper streetMapper;
//创建索引
@Test
public void test() throws Exception{
Analyzer analyzer = new StandardAnalyzer();
Directory directory = FSDirectory.open(Paths.get("D:\\index"));//创建索引文件夹
List<Street> queryStreetName = streetMapper.queryStreetName();
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter iwriter = new IndexWriter(directory, config);
for(Street street:queryStreetName){
Document doc = new Document();
System.out.print(street.getsName());
doc.add(new TextField("sName", street.getsName(), Store.YES));
//doc.add(new TextField("path", fi.getAbsolutePath(), Store.YES));
iwriter.addDocument(doc);
}
iwriter.close();
}
}
3.开始查询
//查询
@Test
public void queryTest() throws Exception{
Directory directory = FSDirectory.open(Paths.get("D:\\index"));
String text = "东晓";
DirectoryReader ireader = DirectoryReader.open(directory);
IndexSearcher isearcher = new IndexSearcher(ireader);
Analyzer analyzer = new StandardAnalyzer();
Query query = null ;
QueryParser qp = new QueryParser("sName", analyzer);
query = qp.parse(text);
/*Term term = new Term("sName", text.toLowerCase());
TermQuery termQuery = new TermQuery(term);*/
QueryScorer scorer = new QueryScorer(query);
SimpleHTMLFormatter simpleHtmlFormatter = new SimpleHTMLFormatter("<B>","</B>");//设定高亮显示的格式<B>keyword</B>,此为默认的格式
Highlighter highlighter = new Highlighter(simpleHtmlFormatter,scorer);
highlighter.setTextFragmenter(new SimpleFragmenter(20));//设置每次返回的字符数
ScoreDoc[] hits = isearcher.search(query,10000).scoreDocs;
for (int i = 0; i < hits.length; i++) {
Document hitDoc = isearcher.doc(hits[i].doc);
System.out.print(hitDoc.get("sName")+"\n");
String str = highlighter.getBestFragment(analyzer, "东晓", hitDoc.get("sName")) ;
System.out.println(str);
}
ireader.close();
directory.close();
}
4.springmvc.xml
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- 运行用 -->
<!-- <property name="driverClassName">
<value>org.logicalcobwebs.proxool.ProxoolDriver</value>
</property>
<property name="url">
<value>proxool.dbname2</value>
</property> -->
<!-- 测试用 -->
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@xxx:1521:orcl"></property>
<property name="username" value="xxx"></property>
<property name="password" value="xxx"></property>
</bean>
本人亲测能用。