Lucene+ik的分页和多条件模糊交集搜索

转载: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>

内容概要:《2024年中国城市低空经济发展指数报告》由36氪研究院发布,指出低空经济作为新质生产力的代表,已成为中国经济新的增长点。报告从发展环境、资金投入、创新能力、基础支撑发展成效五个维度构建了综合指数评价体系,评估了全国重点城市的低空经济发展状况。北京深圳在总指数中名列前茅,分别以91.2684.53的得分领先,展现出强大的资金投入、创新能力基础支撑。低空经济主要涉及无人机、eVTOL(电动垂直起降飞行器)直升机等产品,广泛应用于农业、物流、交通、应急救援等领域。政策支持、市场需求技术进步共同推动了低空经济的快速发展,预计到2026年市场规模将突破万亿元。 适用人群:对低空经济发展感兴趣的政策制定者、投资者、企业研究人员。 使用场景及目标:①了解低空经济的定义、分类发展驱动力;②掌握低空经济的主要应用场景市场规模预测;③评估各城市在低空经济发展中的表现潜力;④为政策制定、投资决策企业发展提供参考依据。 其他说明:报告强调了政策监管、产业生态建设区域融合错位的重要性,提出了加强法律法规建设、人才储备基础设施建设等建议。低空经济正加速向网络化、智能化、规模化集聚化方向发展,各地应找准自身比较优势,实现差异化发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值