Solr:操纵查询字符串(Solr: manipulate query string)
如何操作发送给Solr的查询字符串?
例如,有人输入“stackoverflow-version1.0”,但没有找到结果。 但是,如果查询只是“stackoverflow”,那么搜索就会成功。 所以我想截断“ - ”并再次搜索第一部分。
一些研究将我带到了solr.PatternReplaceCharFilterFactory类。 我将它包含在我的schema.xml中,如下所示。 有谁看到,为什么我的查询仍然没有产生任何结果? 我应该使用的其他课程?
更新:现在我的代码如下所示:
<fieldType name="ngram" class="solr.TextField" omitNorms="true"> <analyzer type="index"> <tokenizer class="solr.NGramTokenizerFactory" minGramSize="1" maxGramSize="20" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" splitOnNumerics="0" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0" preserveOriginal="1" /> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.ASCIIFoldingFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" splitOnNumerics="0" catenateWords="0" catenateNumbers="0" catenateAll="0" preserveOriginal="1" /> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.ASCIIFoldingFilterFactory"/> </analyzer> </fieldType>
How can I manipulate query strings that are sent to Solr?
For example, someone enters "stackoverflow-version1.0" but there will be no results found. However if the query was only "stackoverflow" the search would have been successful. So I want to truncate at "-" and search again for the first part.
Some research brought me to the solr.PatternReplaceCharFilterFactory class. I included it as shown below in my schema.xml. Does anyone see, why my query still does not yield any results? Any other classes I should use?
UPDATE: Now my code looks like follows:
<fieldType name="ngram" class="solr.TextField" omitNorms="true"> <analyzer type="index"> <tokenizer class="solr.NGramTokenizerFactory" minGramSize="1" maxGramSize="20" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" splitOnNumerics="0" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0" preserveOriginal="1" /> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.ASCIIFoldingFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" splitOnNumerics="0" catenateWords="0" catenateNumbers="0" catenateAll="0" preserveOriginal="1" /> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.ASCIIFoldingFilterFactory"/> </analyzer> </fieldType>
原文:https://stackoverflow.com/questions/35797757
最满意答案
容易...根据这篇文章[如何]从终端启动应用程序?
String jsflPath = "/var/...tmp/sample.jsfl"; File jsflFile = new File(jsflPath); jsflFile.setExecutable(true); String[] commands = new String[]{"open", jsflFile.getAbsolutePath() }; ProcessBuilder pb = new ProcessBuilder(commands); pb.start();
要么
String[] commands = new String[]{"open", "-a", "Adobe Flash CS5", jsflFile.getAbsolutePath()};
Easy... according to this article [HOW TO] Launch Application from Terminal?
String jsflPath = "/var/...tmp/sample.jsfl"; File jsflFile = new File(jsflPath); jsflFile.setExecutable(true); String[] commands = new String[]{"open", jsflFile.getAbsolutePath() }; ProcessBuilder pb = new ProcessBuilder(commands); pb.start();
or
String[] commands = new String[]{"open", "-a", "Adobe Flash CS5", jsflFile.getAbsolutePath()};
相关问答
更多-
Mac OS X Upd和Mac OS X UpdCombo的区别[2022-12-04]
在回答之前先向楼上童鞋致以严重的鄙视.. 两者的功能完全一样,只是面向的系统板本不一样.有combo的可以从任何版本的Leopard更新到目标版本,而没有combo的必须从上一版本更新.简单吧~ -
从苹果开发人员连接 : Preferences API生成的首选项文件名为com.apple.java.util.prefs 。 用户的首选项文件存储在其主目录( ~/Library/Preferences/ )中。 系统首选项存储在/Library/Preferences/ ,如果用户是管理员,则只会将其保留在磁盘中。 From Apple Developer Connection: The preferences files generated by the Preferences API are na ...
-
转到下面的链接并下载Java for OS X 2014-001 http://support.apple.com/kb/DL1572?viewlocale=en_US&locale=en_US 希望安装它后,它将工作 Go to the link below and download Java for OS X 2014-001 http://support.apple.com/kb/DL1572?viewlocale=en_US&locale=en_US Hopefully after installi ...
-
容易...根据这篇文章[如何]从终端启动应用程序? String jsflPath = "/var/...tmp/sample.jsfl"; File jsflFile = new File(jsflPath); jsflFile.setExecutable(true); String[] commands = new String[]{"open", jsflFile.getAbsolutePath() }; ProcessBuilder pb = new ProcessBuilder(comm ...
-
Mac OS X上的Tomcat 6.0(Tomcat 6.0 on Mac OS X)[2023-01-18]
可能你的系统类路径以某种方式受到2.5之前的servlet API jar的污染。 您可以通过运行java javax.servlet.http.HttpServlet来检查它 - 它应该抛出NoClassDefFound 。 如果它抛出NoSuchMethodError ,请检查您的类路径(尤其是JRE安装的CLASSPATH环境变量和lib/ext子文件夹)。 编辑 :尝试以下代码 - 至少它将显示违规jar的位置: public class Test { public static void ... -
在Leopard上,打开/Applications/Utilities/Java/Java Preferences.app ,并选择Java 6作为applet的默认值。 当然,如果你没有运行Leopard的英特尔Mac(至少,我认为它需要Leopard ......也许有Tiger的安装程序),这将无效。 在任何一种情况下,如果您需要为用户部署基于1.6的applet,则不可靠,但为您自己的冲浪工作。 It was a problem with OSX itself that didn't support ...
-
Mac OS X上Java的未来(Future of Java on Mac OS X)[2022-12-06]
Mac上Java的未来很好。 Apple将他们的代码贡献给OpenJDK项目,该项目还启动了一个项目(启动Java 7)来构建Mac的二进制文件。 因此,在不久的将来,我们的Mac用户将能够安装JRE和JDK,就像Windows和Linux用户一样。 在这里和这里阅读。 The future of Java on Mac is fine. Apple is contributing their code to the OpenJDK project, which has also started a pro ... -
Jenkins在Mac OS X上安装(Jenkins install on Mac OS X)[2023-01-04]
确保没有运行Jenkins或Tomcat的其他实例( sudo ps -ef | grep jenkins或sudo ps -ef | grep java ) sudo netstat -a | grep LISTEN sudo netstat -a | grep LISTEN查看哪些进程正在侦听端口 使用不同的端口java -jar jenkins.jar --httpPortMake sure there are no other instances of Jenkins ... -
从Java调用osascriptWrapper.sh脚本: Runtime.getRuntime().exec("/path/to/osascriptWrapper.sh myjar.jar"); 将osascriptWrapper.sh定义为: #!/bin/bash osascript -e "do shell script \"/path2/to2/runJar.sh $*\" with administrator privileges" 和runJar.sh: #!/bin/bash jav ...
-
使用Java / Swing应用程序中的Mac OS X Services菜单(Using Mac OS X Services-menu from a Java/Swing application)[2023-09-16]
看一下apple的OSXAdapter包 (链接需要免费的苹果开发人员登录)进行java开发。 包中包含的示例向您展示了如何以仅在应用程序在OS X下运行时激活的方式很好地集成到OS X应用程序菜单。 This seems to work on Mac OS X Leopard, with no change to the original application. So I've lost interest in the answer (to how to make it work on Tiger). ...