`

用lucene3.5搜索数据库和txt文件内容

 
阅读更多
我们以前经常碰到搜索数据库的内容;用like %的sql语句;如果数据量大而且多表查询时;速度实在让人难以忍受。。。如果用lucene3.5那就可以把这个恼人的问题解决了。
<wbr></wbr>
lucene3.5搜索photo表的title,username,tagname,desr内容;
用一个例题来说明更直观;此例题能搜索中文分词;
(需要mysql5的jdbc包和lucene3.5的包):
<wbr></wbr>
1、数据库我用mysql5;建一个photo表;数据库名是test。
--
-- 表的结构 `photo`
--
CREATE TABLE IF NOT EXISTS `photo` (
<wbr> `photo_id` int(10) unsigned NOT NULL AUTO_INCREMENT,<br><wbr> `title` varchar(11) DEFAULT NULL,<br><wbr> `descr` text,<br><wbr> `user_name` varchar(11) DEFAULT NULL,<br><wbr> `tag_name` varchar(11) DEFAULT NULL,<br><wbr> PRIMARY KEY (`photo_id`)<br> ) ENGINE=InnoDB<wbr> DEFAULT CHARSET=utf8 ROW_FORMAT=REDUNDANT AUTO_INCREMENT=5 ;</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
--
-- 导出表中的数据 `photo`
--
INSERT INTO `photo` (`photo_id`, `title`, `descr`, `user_name`, `tag_name`) VALUES
(1, '美女', '美女', '好人5', '美女'),
(2, '美女', '美女', '美女', '美女'),
(3, 'hagh', '说的就是我的是', '', NULL),
(4, 'hagh', '说的就是我的是', ' ', NULL);
<wbr></wbr>
2、java文件有4个:
<wbr></wbr>
文件Photo.java是数据库的photo表的操作文件;内容如下:
package test;
import java.sql.Connection;
import java.util.ArrayList;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Photo {
<wbr>private long photoId;<br><wbr>private String title;<br><wbr>private String description;<br><wbr>private String userName;<br><wbr>private String tag;<br><wbr>public String getDescription() {<br><wbr> return description;<br><wbr>}<br><wbr>public void setDescription(String description) {<br><wbr> this.description = description;<br><wbr>}<br><wbr>public long getPhotoId() {<br><wbr> return photoId;<br><wbr>}<br><wbr>public void setPhotoId(long photoId) {<br><wbr> this.photoId = photoId;<br><wbr>}<br><wbr>public String getTag() {<br><wbr> return tag;<br><wbr>}<br><wbr>public void setTag(String tag) {<br><wbr> this.tag = tag;<br><wbr>}<br><wbr>public String getTitle() {<br><wbr> return title;<br><wbr>}<br><wbr>public void setTitle(String title) {<br><wbr> this.title = title;<br><wbr>}<br><wbr>public String getUserName() {<br><wbr> return userName;<br><wbr>}<br><wbr>public void setUserName(String userName) {<br><wbr> this.userName = userName;<br><wbr>}<br><wbr>public static Photo[] loadPhotos(Connection con) throws Exception {<br><wbr> ArrayList&lt;Photo&gt; list = new ArrayList&lt;Photo&gt;();<br><wbr> PreparedStatement pstm = null;<br><wbr> ResultSet rs = null;<br><wbr> String sql = "select photo_id,title,descr,user_name,tag_name from photo";<br><wbr> try {<br><wbr><wbr> pstm = con.prepareStatement(sql);<br><wbr><wbr> rs = pstm.executeQuery();<br><wbr><wbr> while (rs.next()) {<br><wbr><wbr><wbr> Photo photo = new Photo();<br><wbr><wbr><wbr> photo.setPhotoId(rs.getLong(1));<br><wbr><wbr><wbr> photo.setTitle(rs.getString(2));<br><wbr><wbr><wbr> photo.setDescription(rs.getString(3));<br><wbr><wbr><wbr> photo.setUserName(rs.getString(4));<br><wbr><wbr><wbr> photo.setTag(rs.getString(5));<br><wbr><wbr><wbr> list.add(photo);<br><wbr><wbr> }<br><wbr> } catch (SQLException e) {<br><wbr><wbr> e.printStackTrace();<br><wbr> } finally {<br><wbr><wbr> if (rs != null) {<br><wbr><wbr><wbr> rs.close();<br><wbr><wbr> }<br><wbr><wbr> if (pstm != null) {<br><wbr><wbr><wbr> pstm.close();<br><wbr><wbr> }<br><wbr> }<br><wbr> return (Photo[]) list.toArray(new Photo[list.size()]);<br><wbr>}<br> }</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

文件IndexerFile.java是把数据库的内容备份成索引文件到磁盘中去;
内容如下:
package test;
import java.io.File;
import java.io.IOException;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.apache.lucene.document.Field;
public class IndexerFile {
<wbr>public static int indexFile(String indexDir,Photo[] list) throws IOException{<br><wbr> IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35));<br><wbr><wbr><wbr><wbr> conf.setOpenMode(OpenMode.CREATE);<br><wbr><wbr><wbr><wbr> IndexWriter writer = new IndexWriter(FSDirectory.open(new File(indexDir)), conf);<br><wbr><br><wbr> for(int i=0;i&lt;list.length;i++){<br><wbr><wbr> Document doc=new Document();<br><wbr><wbr> doc.add(new Field("photoId", String.valueOf(list[i].getPhotoId()), Field.Store.YES, Field.Index.NO));<br><wbr><wbr> if(list[i].getTitle()!=null &amp;&amp; list[i].getTitle().length()&gt;0)<br><wbr><wbr><wbr> doc.add(new Field("title", list[i].getTitle(), Field.Store.YES, Field.Index.ANALYZED));<br><wbr><wbr> if(list[i].getDescription()!=null &amp;&amp; list[i].getDescription().length()&gt;0)<br><wbr><wbr><wbr> doc.add(new Field("description", list[i].getDescription(), Field.Store.YES, Field.Index.ANALYZED));<br><wbr><wbr> if(list[i].getUserName()!= null &amp;&amp; list[i].getUserName().length()&gt;0)<br><wbr><wbr> doc.add(new Field("userName", list[i].getUserName(), Field.Store.YES, Field.Index.ANALYZED));<br><wbr><wbr> if(list[i].getTag()!= null &amp;&amp; list[i].getTag().length()&gt;0)<br><wbr><wbr><wbr> doc.add(new Field("tag", list[i].getTag(), Field.Store.YES, Field.Index.ANALYZED));<br><wbr><wbr> writer.addDocument(doc);<br><wbr> }<br><wbr><br><wbr> int numIndexed = writer.maxDoc();<br><wbr> writer.forceMerge(1);<br><wbr> writer.close();<br><wbr> return numIndexed;<br><wbr>}<br> }<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
文件SearcherFile.java是搜索磁盘索引文件内容的;
内容如下:
package test;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.util.Version;
public class SearcherFile {
<wbr>public static void search(IndexSearcher searcher, String[] q) throws IOException, ParseException {<br><wbr> Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);<br><wbr> String[] fields = {"title","description","tag","userName"};<wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> Query query = MultiFieldQueryParser.parse(Version.LUCENE_35, q, fields, analyzer);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> TopDocs topDocs = searcher.search(query, 100);//100是显示队列的Size<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> ScoreDoc[] hits = topDocs.scoreDocs;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> System.out.println("共有" + searcher.maxDoc() + "条索引,命中" + hits.length + "条");<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> for (int i = 0; i &lt; hits.length; i++) {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> int DocId = hits[i].doc;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> Document document = searcher.doc(DocId);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> System.out.println("photoId==="+document.get("photoId"));<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> }<br><wbr>}<br> }</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
文件TestDb.java是操作的主文件;
内容如下:
package test;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Date;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.store.FSDirectory;
public class TestDb {
<wbr>public final static String indexDir ="E:\\TestLucene";<br><wbr>private static Connection getConnection() {<br><wbr> Connection conn = null;<br><wbr> String url = "jdbc:mysql://localhost:3306/test";<br><wbr> String userName = "root";<br><wbr> String password = "root";<br><wbr> try {<br><wbr><wbr> Class.forName("com.mysql.jdbc.Driver");<br><wbr><wbr> conn = java.sql.DriverManager<br><wbr><wbr><wbr><wbr> .getConnection(url, userName, password);<br><wbr> } catch (Exception e) {<br><wbr><wbr> e.printStackTrace();<br><wbr><wbr> System.out.println("Error Trace in getConnection() : "<br><wbr><wbr><wbr><wbr> + e.getMessage());<br><wbr> }<br><wbr> return conn;<br><wbr>}<br><wbr>public static void main(String[] args) throws IOException, ParseException, SQLException {<br><wbr> index();//做索引<br><wbr> IndexSearcher searcher=null;<br><wbr> try{<br><wbr><wbr> IndexReader reader = IndexReader.open(FSDirectory.open(new File(indexDir)),false);<wbr><br><wbr><wbr><wbr><wbr><wbr> searcher = new IndexSearcher(reader);<br><wbr><wbr> search(searcher);//搜索<br><wbr> }catch(Exception e){<br><wbr><wbr> e.printStackTrace();<br><wbr> }finally{<br><wbr><wbr> if(searcher!=null)<br><wbr><wbr> searcher.close();<br><wbr> }<br><wbr>}<br><wbr>public static void search(IndexSearcher searcher) throws IOException, ParseException{<br><wbr> //以下是搜索的关键词<br><wbr> String[] q = {"美女1","美女2","好人3","好人5"};<br><wbr> long start=new Date().getTime();<br><wbr> SearcherFile.search(searcher,q);<br><wbr> long end=new Date().getTime();<br><wbr> System.out.println("花费时间:"+(double)(end-start)/1000+"秒");<br><wbr>}<br><wbr>public static void index() throws SQLException{<br><wbr> Connection conn = null;<br><wbr> try {<br><wbr><wbr> conn = getConnection();<br><wbr><wbr> Photo[] list = Photo.loadPhotos(conn);<br><wbr><wbr> IndexerFile.indexFile(indexDir,list);<br><wbr> } catch (Exception e) {<br><wbr><wbr> e.printStackTrace();<br><wbr> } finally {<br><wbr><wbr> if (conn != null) {<br><wbr><wbr><wbr> conn.close();<br><wbr><wbr> }<br><wbr> }<br><wbr>}<br> }<br><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
二、下面是lucene3.5搜索txt文本文件
<wbr></wbr>
建一个E:\\TestLucene\\fileS的文件夹,放需要搜索的文件。
在该文件夹里面随便建三个txt文件,"1.txt","2.txt"和"3.txt"

<wbr></wbr>

其中1.txt的内容如下:<wbr><wbr></wbr></wbr>

老周
北京人民<wbr><br> 2009年</wbr>

2.txt和3.txt也随便写些。

<wbr></wbr>

再建一个E:\\TestLucene\\fileIndex的文件夹;放索引文件。

<wbr></wbr>

<wbr></wbr>

java文件TestQueryFile:内容如下

<wbr></wbr>

package test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Date;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.apache.lucene.document.Field;
public class TestQueryFile {
<wbr><br><wbr><wbr><wbr><wbr><wbr> public static void main(String[] args) throws Exception {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> indexF();<wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> String queryString = "北京";<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> Query query = null;<br><wbr><wbr><wbr><wbr><wbr><wbr> IndexReader reader = IndexReader.open(FSDirectory.open(new File("E:\\TestLucene\\fileIndex")),true);//read-only<br><wbr><wbr><wbr><wbr><wbr> IndexSearcher searcher = new IndexSearcher(reader);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> String fields = "body";<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> try {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> QueryParser qp = new QueryParser(Version.LUCENE_35, fields, new StandardAnalyzer(Version.LUCENE_35));//有变化的地方<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> query = qp.parse(queryString);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> } catch (ParseException e) {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> }<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> if (searcher != null) {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> TopDocs topDocs = searcher.search(query, 100);//100是显示队列的Size<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> ScoreDoc[] hits = topDocs.scoreDocs;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> System.out.println("共有" + searcher.maxDoc() + "条索引,命中" + hits.length + "条");<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> }<br><wbr><wbr><wbr><wbr><wbr><wbr> }<br><wbr><br><wbr><wbr><wbr><wbr><wbr> private static void indexF() throws Exception {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> File fileDir = new File("E:\\TestLucene\\fileS");<br><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> File indexDir = new File("E:\\TestLucene\\fileIndex");<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35));<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

分享到:
评论

相关推荐

    免费站内搜索引擎 基于C#与 lucene.net开发的 SQLServer版

    使用前请确认您的电脑上已经正确安装了 .net framework 3.5 本产品目前仅支持 SQL Server 数据库,后续会持续更新升级; 产品开发目前基于C# Lucene.Net 软件包括两个个部分: 1、jwSearchEngine索引器: 索引器...

    [源代码] ASP.NET 3.5 商用社交网站开发全程解析

    ★ 程序说明:★ ☆ 网站技术:☆ 架构体系: 数据访问层 (Data Access Layer) (LINQ to SQL 实现) 存储库层 (Repository Layer) ...☆ 文件内容:☆ - [电子书] - [数据库] - [源代码] - [程序运行说明]

    SNS源代码,社区系统,基于.net3.5+sql,C#,aspx

    其采用asp.net mvc进行开发,可以使用SQL Server数据库或者MySql数据库,借助Lucene实现的全文检索。 基封装了数据访问、缓存、文件存储、自运行任务、图像处理、邮件发送等技术构件以及动态、通知、私信、积分、...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    毕业论文模板.docx

    3.5 索引与搜索核心算法 7 4 数据库连接技术 8 4.1 JDBC 8 4.2 本实验对数据库连接的封装 9 5 实验环境 9 6 本地文件全文搜索实验方案 10 6.1 系统简介 10 6.2 实现方案介绍 11 6.3 工程模块各类关系介绍 12 6.4 ...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA WEB典型模块与项目实战大全

    9.3 下载和分析lucene全文搜索组件  9.4 初步使用lucene全文搜索组件  9.5 新闻搜索引擎具体实现  9.6 小结  第10章 在线网上支付(jsp+servlet+javabean)  10.1 在线网上支付原理  10.2 在线网上支付...

    大型分布式网站架构与实践

     垂直化的搜索引擎在分布式系统中的使用,包括搜索引擎的基本原理、Lucene详细的使用介绍,以及基于Lucene的开源搜索引擎工具Solr的使用。  2.1 分布式缓存 60  2.1.1 memcache简介及安装 60  2.1.2 memcache ...

    微信公众平台应用开发:方法、技巧与案例.(机械工业.柳峰)

     11.2.6 案例:使用Lucene索引和检索 291  11.3 中文分词 296  11.3.1 中文分词方法 296  11.3.2 IK分词器的使用 297  11.4 索引浏览器Luke 299  11.4.1 Luke的功能及下载 299  11.4.2 Luke的用法 300...

    SpaceBuilder论坛系统源码程序包

    为达到最佳效果,推荐使用九网互联的ASP.net空间,支持ASP.net版本1.1和2.0在线切换、在线脚本映射、ASP.net具体错误信息在线查看。SpaceBuilder是一款基于asp.net业内领先的Web2.0社区平台。结合博客、相册、文件、...

    ZendFramework中文文档

    10.2.3.5. Fetching a Row as an Object 10.3. Zend_Db_Profiler 10.3.1. Introduction 10.3.2. Using the Profiler 10.3.3. Advanced Profiler Usage 10.3.3.1. Filter by query elapsed time 10.3.3.2. ...

Global site tag (gtag.js) - Google Analytics