0

我目前正在将 JavaScript 框架 AJAX Solr 集成到我的域中。我正在尝试查询诸如“博士”或“程序”之类的词,但控制台仅报告“*:*”默认通配符。

路透社示例 (/ajax-solr/examples/reuters/index.html) 每个 Chrome 控制台发出两个 ajax 请求:

                Resource interpreted as Script but transferred with MIME type text/plain: "http://evolvingweb.ca/solr/reuters/select?facet=true&q=*%3A*&facet.field=to…&wt=json&json.wrf=jQuery17206055877613835037_1383157992399&_=1383157992504". 

                Resource interpreted as Script but transferred with MIME type text/plain: "http://evolvingweb.ca/solr/reuters/select?rows=0&facet=true&facet.limit=-1&…&wt=json&json.wrf=jQuery17206055877613835037_1383157992400&_=1383157992844". 

而我只看到这个:

                Resource interpreted as Script but transferred with MIME type text/plain: "http://localhost:8983/solr/rockies/select?q=*%3A*&wt=json&json.wrf=jQuery17107057890424039215_1383158110410&_=1383158110688". 

我的HTML如下:

                <form action="/search.htm" id="search-form">
                      <ul id="search">
                        <input type="text" id="query" name="query" autocomplete="off">
                      </ul>    
                </form>

在此构造下,查询将报告到搜索结果页面 (search.htm)。

此外,我只使用了寻呼机和结果小部件,并注释掉了 TagcloudWidget、CurrentSearchWidget、AutocompleteWidget、CountryCodeWidget 和 CalendarWidget 等小部件。

这是我在全球范围内包含的内容(假设 jQuery 1.7.1 是依赖项):

                <link rel="stylesheet" href="css/search.css">
                <script src="js/search.js"></script>
                <script src="js/Core.js"></script>
                <script src="js/AbstractManager.js"></script>
                <script src="js/Manager.jquery.js"></script>
                <script src="js/Parameter.js"></script>
                <script src="js/ParameterStore.js"></script>
                <script src="js/AbstractWidget.js"></script>
                <script src="js/ResultWidget.js"></script>
                <script src="js/PagerWidget.js"></script>

所有 JS 文件都合并到一个“js”文件夹中。可应要求提供 Pastebins。

我已经通过 SOLR 的 UI(即 http://localhost:8983/solr/#/rockies/query)确认 JSON 可以返回除通配符之外的不同结果(即“博士”或“程序”)。

我的环境和app版本如下:

  • AJAX 解决方案
  • Nutch 1.7
  • 索尔 4.5
  • MAC OSX (10.8.5)
  • java版本“1.6.0_51”

solr.log 文件当前报告了这一点

建议将不胜感激。

4

2 回答 2

0

是的,我们的两种方法都很接近。然而,我所做的是将变量(在您的情况下为 queryValue)烘焙到我的 reuters.js 文件(即 search.js)版本中。唯一的区别是我从 window.location 对象中提取值与输入字段的值。我的更改在 pastebin 上并且确实有效,http ://pastebin.com/GyC4RMva

输入标签上不需要内联 JavaScript。

于 2013-10-31T04:20:28.187 回答
0

Ajax-solr 项目中的路透社示例将基于Facet组件的所有查询。solr facet 组件参数的键名是“fq”,因此如果您在名为“category”的字段上应用 facet 搜索,您会发现类似http://YourSolrServer.com/select?param1¶m2¶mN& fq=category:mySearchString &q=* : *

所以真正发生在 Reuters Solr 示例中的是,他们使用参数“fq”对 facet 组件应用过滤器,根本不修改“q”参数,只是说.. q=* : * 给我所有..因为我会按 'fq' 过滤。

如果您需要在使用 facet 的情况下对字段应用搜索,则必须编写自定义修改代码,添加 js 或 jquery 函数来读取搜索输入中的内容。

你可以试试这个

html

<input type="text" id="query" name="query" autocomplete="off">
<input type="button" onclick="searchThis();" value="Search Now">

JS

function searchThis(){
  var queryValue = $('#query').val();
  Manager.store.addByValue('q', queryValue);
  Manager.doRequest();
}

PS:我没有尝试过代码..但你的应该非常接近这个..

于 2013-10-31T04:06:11.633 回答