转载:http://download.youkuaiyun.com/detail/isresultxal/9133977
jar包支持http://blog.youkuaiyun.com/isresultxal/article/details/48683637
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">package <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">com</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.sgfm</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.datacenter</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.sys</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.io</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.File</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.util</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.ArrayList</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.util</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.HashMap</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.util</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.List</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.util</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Map</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.analysis</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Analyzer</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.document</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Document</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.document</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Field</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.IndexReader</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.IndexWriter</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.IndexWriterConfig</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Term</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.IndexWriterConfig</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.OpenMode</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.queryParser</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.QueryParser</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.queryParser</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.QueryParser</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Operator</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.search</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.BooleanClause</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.search</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.BooleanQuery</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.search</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.FuzzyQuery</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.search</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.IndexSearcher</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.search</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Query</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.search</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.ScoreDoc</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.search</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Sort</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.search</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.TermQuery</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.search</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.TopDocs</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.search</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.TopScoreDocCollector</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.search</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.WildcardQuery</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.store</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Directory</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.store</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.FSDirectory</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.util</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Version</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import org<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.wltea</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.analyzer</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lucene</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.IKAnalyzer</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">com</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.sgfm</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.datacenter</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.dao</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.product</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.ProductDao</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">com</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.sgfm</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.datacenter</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.util</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.CommUtil</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> import <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">com</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.sgfm</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.datacenter</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.util</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.SpringContext</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> public class LuceneData { static String productIndex = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"D:\\luceneIndex\\product"</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> static String storeIndex = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"D:\\luceneIndex\\store"</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">/** * 创建商品索引(没有则新建,有则更新) */</span> public static void createProductIndex(){ try { IndexWriter writer = null<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> // 这里放索引文件的位置 File indexdir = new File(productIndex)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> // 放在硬盘上可以用FSDirectory(),放在内存的用RAMDirectory()不过一关机就没了 Directory dir = FSDirectory<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.open</span>(indexdir)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> //创建一个中文分词器 Analyzer analyzer = new IKAnalyzer()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> // 创建一个语法分析器 //Analyzer luceneAnalyzer = new StandardAnalyzer(Version<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.LUCENE</span>_36)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> //这行代码设置了存放索引的文件夹将以覆盖或者新建的方式建立。如果没有这样设置,并且在原索引文件夹中索引没有被删除的情况下,新的索引文件将会append到原来索引文件之后,这样会导致索引结果发生错误。 IndexWriterConfig iwc = new IndexWriterConfig(Version<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.LUCENE</span>_36, analyzer)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> iwc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.setOpenMode</span>(OpenMode<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.CREATE</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> // 创建一个IndexWriter(存放索引文件的目录,分析器,Field的最大长度) writer = new IndexWriter(dir, iwc)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> writer<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.deleteAll</span>()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> writer<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.commit</span>()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> ProductDao pd = (ProductDao)SpringContext<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.getBean</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"productDao"</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> List<Map> productList = pd<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.findAllProductLucene</span>()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> for(int i = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;i<productList.size();i++){</span> Document doc = new Document()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> //为字段 建索引 doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(new Field(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pid"</span>,productList<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(i)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"PID"</span>)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.toString</span>(),Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Store</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.YES</span>,Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.NOT</span>_ANALYZED_NO_NORMS))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; //主键不分词</span> doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(new Field(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pno"</span>,productList<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(i)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"P_NO"</span>)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.toString</span>(),Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Store</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.YES</span>,Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.NOT</span>_ANALYZED_NO_NORMS))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; // 编号不分词</span> doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(new Field(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"city"</span>,productList<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(i)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"CITY"</span>)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.toString</span>(),Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Store</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.YES</span>,Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.NOT</span>_ANALYZED_NO_NORMS))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; //城市不分词</span> doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(new Field(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pname"</span>,productList<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(i)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"PNAME"</span>)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.toString</span>(),Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Store</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.YES</span>,Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.ANALYZED</span>))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(new Field(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"bname"</span>,productList<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(i)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"BNAME"</span>)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.toString</span>(),Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Store</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.YES</span>,Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.ANALYZED</span>))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(new Field(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"product_dec"</span>,productList<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(i)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"PRODUCT_DEC"</span>)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.toString</span>(),Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Store</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.YES</span>,Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.NOT</span>_ANALYZED_NO_NORMS))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;//商品详细说明不需要分词</span> doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(new Field(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"count"</span>,productList<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(i)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"COUNT"</span>)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.toString</span>(),Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Store</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.YES</span>,Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.NOT</span>_ANALYZED_NO_NORMS))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; //销售量不分词</span> doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(new Field(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"img_s"</span>,productList<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(i)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"IMG_S"</span>)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.toString</span>(),Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Store</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.YES</span>,Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.NOT</span>_ANALYZED_NO_NORMS))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; //图片路径不分词</span> doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(new Field(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"shop_price"</span>,productList<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(i)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"SHOP_PRICE"</span>)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.toString</span>(),Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Store</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.YES</span>,Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.NOT</span>_ANALYZED_NO_NORMS))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; //销售价格不分词</span> doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(new Field(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"market_price"</span>,productList<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(i)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"MARKET_PRICE"</span>)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.toString</span>(),Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Store</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.YES</span>,Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.NOT</span>_ANALYZED_NO_NORMS))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; //原价不分词</span> doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(new Field(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"discount"</span>,productList<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(i)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"DISCOUNT"</span>)<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.toString</span>(),Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Store</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.YES</span>,Field<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Index</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.NOT</span>_ANALYZED_NO_NORMS))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; //折扣</span> writer<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.addDocument</span>(doc)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> } writer<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.close</span>()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> } catch (Exception e) { // TODO: handle exception } } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">/** * 商品多条件查询 * @param keyWord * @return */</span> public static ArrayList searchProductIndexMore(String keyWord){ ArrayList list = new ArrayList()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> try { File indexdir = new File(productIndex)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> Directory dir = FSDirectory<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.open</span>(indexdir)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> Analyzer analyzer = new IKAnalyzer(true)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> IndexSearcher searcher = new IndexSearcher(dir)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> //BooleanClause<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Occur</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.MUST</span>表示<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span>, feedom<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.net</span> //BooleanClause<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Occur</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.MUST</span>_NOT表示not, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">54</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">com</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.cn</span> //BooleanClause<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Occur</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.SHOULD</span>表示<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">or</span>. BooleanQuery booleanQuery = new BooleanQuery()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> QueryParser parser1 = new QueryParser(Version<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.LUCENE</span>_36,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pname"</span>,analyzer)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> Query titleQuery = parser1 <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.parse</span>(keyWord)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> booleanQuery<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(titleQuery,BooleanClause<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Occur</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.SHOULD</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> QueryParser parser2 = new QueryParser(Version<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.LUCENE</span>_36,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"bname"</span>,analyzer)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> Query contentQuery = parser2 <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.parse</span>(keyWord)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> booleanQuery<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(contentQuery ,BooleanClause<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Occur</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.SHOULD</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> TopDocs topDocs = searcher<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.search</span>(booleanQuery, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">100</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> ScoreDoc[] hits = topDocs<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.scoreDocs</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> for(int i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;i< hits.length;i++){</span> int DocId = hits[i]<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.doc</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> Document doc = searcher<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.doc</span>(DocId)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> System<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pid:"</span>+doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pid"</span>)+<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">";pname:"</span>+doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pname"</span>)+<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">";bname:"</span>+doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"bname"</span>)+<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">";city:"</span>+doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"city"</span>))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> list<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(doc)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> } System<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"满足结果记录条数:"</span> + topDocs<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.totalHits</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> } catch (Exception e) { // TODO: handle exception } return list<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">/** * 商品查询并分页 * @param keyWord 条件 * @param pageSize 每页的内容数量 * @param curpage 页数 * @return */</span> public static ArrayList searchProductIndexMorePage(String city,String keyWord,int pageSize,int curpage){ ArrayList list = new ArrayList()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> try { //int pageSize = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; //每页记录数</span> //int curpage = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; //当前页</span> int start = (curpage - <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>) * pageSize<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> int rowCount<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; //总条数</span> int pages<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; //总页数</span> File indexdir = new File(productIndex)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> Directory dir = FSDirectory<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.open</span>(indexdir)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> IndexReader reader = IndexReader<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.open</span>(dir)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> Analyzer analyzer = new IKAnalyzer(true)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> IndexSearcher searcher = new IndexSearcher(dir)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> //BooleanClause<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Occur</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.MUST</span>表示<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span>, feedom<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.net</span> //BooleanClause<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Occur</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.MUST</span>_NOT表示not, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">54</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">com</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.cn</span> //BooleanClause<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Occur</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.SHOULD</span>表示<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">or</span>. BooleanQuery booleanQuery = new BooleanQuery()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> if(keyWord<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.equals</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">""</span>)){ booleanQuery<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(new TermQuery(new Term(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"city"</span>,city)),BooleanClause<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Occur</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.MUST</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> }else{ <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">/*QueryParser parser1 = new QueryParser(Version.LUCENE_36,"city",analyzer); Query cityQuery = parser1 .parse(city); booleanQuery.add(cityQuery,BooleanClause.Occur.MUST); QueryParser parser2 = new QueryParser(Version.LUCENE_36,"pname",analyzer); Query pnameQuery = parser2 .parse(keyWord); booleanQuery.add(pnameQuery,BooleanClause.Occur.SHOULD); QueryParser parser3 = new QueryParser(Version.LUCENE_36,"bname",analyzer); Query bnameQuery = parser3 .parse(keyWord); booleanQuery.add(bnameQuery ,BooleanClause.Occur.SHOULD); */</span> BooleanQuery q1 = new BooleanQuery()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> QueryParser parser1 = new QueryParser(Version<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.LUCENE</span>_36,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pname"</span>,analyzer)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> parser1<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.setDefaultOperator</span>(Operator<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.AND</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; //搜索条件分词取得的索引数据的交集</span> Query pnameQuery = parser1 <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.parse</span>(keyWord)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> QueryParser parser2 = new QueryParser(Version<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.LUCENE</span>_36,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"bname"</span>,analyzer)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> parser2<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.setDefaultOperator</span>(Operator<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.AND</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; //搜索条件分词取得的索引数据的交集</span> Query bnameQuery = parser2 <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.parse</span>(keyWord)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> q1<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(pnameQuery,BooleanClause<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Occur</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.SHOULD</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> q1<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(bnameQuery,BooleanClause<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Occur</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.SHOULD</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> q1<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(new WildcardQuery(new Term(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pno"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"*"</span>+keyWord<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.toUpperCase</span>()+<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"*"</span>)),BooleanClause<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Occur</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.SHOULD</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> booleanQuery<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(new TermQuery(new Term(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"city"</span>,city)),BooleanClause<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Occur</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.MUST</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> booleanQuery<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(q1,BooleanClause<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Occur</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.MUST</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> } int hm = start + pageSize<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> TopScoreDocCollector res = TopScoreDocCollector<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.create</span>(hm, false)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> searcher<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.search</span>(booleanQuery, res)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> rowCount = res<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.getTotalHits</span>()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> pages = (rowCount - <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>) / pageSize + <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; //计算总页数</span> System<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"rowCount:"</span> + rowCount)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> System<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pages:"</span>+pages)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> TopDocs tds = res<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.topDocs</span>(start, pageSize)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> ScoreDoc[] hits = tds<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.scoreDocs</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> for(int i=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;i< hits.length;i++){</span> int DocId = hits[i]<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.doc</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> Document doc = searcher<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.doc</span>(DocId)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> //System<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.println</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pid:"</span>+doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pid"</span>)+<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">";pname:"</span>+doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pname"</span>)+<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">";bname:"</span>+doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"bname"</span>)+<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">";city:"</span>+doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"city"</span>))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">; </span> Map productMap = new HashMap()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> if(i==<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>){ productMap<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.put</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"rowCount"</span>, rowCount)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> productMap<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.put</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pages"</span>, pages)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> } productMap<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.put</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pid"</span>, doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pid"</span>))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> productMap<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.put</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pname"</span>, doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pname"</span>))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> productMap<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.put</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"bname"</span>, doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"bname"</span>))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> productMap<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.put</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"product_dec"</span>, doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"product_dec"</span>))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> productMap<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.put</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"count"</span>, doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"count"</span>))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> productMap<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.put</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"img_s"</span>, doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"img_s"</span>))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> productMap<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.put</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"shop_price"</span>, doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"shop_price"</span>))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> productMap<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.put</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"market_price"</span>, doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"market_price"</span>))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> productMap<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.put</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"discount"</span>, doc<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"discount"</span>))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> list<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(productMap)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> } } catch (Exception e) { // TODO: handle exception } return list<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> } }</code>